Mit der öffentlichen gespeicherten Prozedur bqutil.procedure.bqml_generate_text in BigQuery können Sie Batchaufrufe der Funktion ML.GENERATE_TEXT durchlaufen, um große Datasets zu verarbeiten, ohne die Kontingente und Limits des Endpunkts zu überschreiten. Da BigQuery-Abfragejobs auch dann abgeschlossen werden, wenn die Funktion für einzelne Zeilen fehlschlägt, können bei einem hohen Anfragevolumen RESOURCE EXHAUSTED wiederholbare Fehler in der Ausgabetabelle auftreten. In dieser Anleitung erstellen Sie ein Remote-Modell und führen die gespeicherte Prozedur aus, um fehlgeschlagene Zeilen iterativ zu wiederholen, bis alle Datensätze in einem öffentlichen Nachrichten-Dataset verarbeitet wurden.
Den Quellcode für die gespeicherte Prozedur auf GitHub finden Sie unter bqml_generate_text.sqlx.
Weitere Informationen zu den Parametern und zur Verwendung der gespeicherten Prozedur finden Sie in der README-Datei.
Ziele
- BigQuery-Dataset erstellen
- BigQuery ML-Remote-Modell über ein
gemini-3.5-flash-lite-Modell erstellen - Führen Sie die gespeicherte Prozedur
bqutil.procedure.bqml_generate_textaus, um iterativ Text aus dem öffentlichen Datasetbigquery-public-data.bbc_news.fulltextzu generieren. - Prüfen Sie die generierten Textergebnisse und bestätigen Sie, dass keine wiederholbaren Kontingentfehler mehr vorhanden sind.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Gemini Enterprise Agent Platform: You incur costs for calls to the Agent Platform model.
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Weitere Informationen finden Sie unter BigQuery-Preise und Agent Platform-Preise.
Hinweis
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Aktivieren Sie die BigQuery API, die BigQuery Connection API und die Agent Platform API, falls sie noch nicht aktiviert sind.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Inhaberrolle (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen dieser Anleitung benötigen:
-
BigQuery-Datasets, -Verbindungen und -Modelle erstellen und verwenden: BigQuery-Administrator (
roles/bigquery.admin) für Ihr Projekt -
Gewähren Sie dem Dienstkonto der Verbindung die Berechtigungen Project IAM Admin (
roles/resourcemanager.projectIamAdmin) für Ihr Projekt.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Abschließen dieser Anleitung erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um diese Anleitung abzuschließen:
-
Dataset erstellen:
bigquery.datasets.create -
Verbindung erstellen, delegieren und verwenden:
bigquery.connections.* -
Legen Sie die Standardverbindung fest:
bigquery.config.* -
Legen Sie die Dienstkontoberechtigungen fest:
-
resourcemanager.projects.getIamPolicy -
resourcemanager.projects.setIamPolicy
-
-
Modell erstellen und Inferenz ausführen:
-
bigquery.jobs.create -
bigquery.models.create -
bigquery.models.getData -
bigquery.models.updateData -
bigquery.models.updateMetadata
-
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Dataset erstellen
Wählen Sie eine der folgenden Optionen aus, um ein BigQuery-Dataset zu erstellen:
Console
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Klicken Sie im linken Bereich auf Explorer:

Wenn der linke Bereich nicht angezeigt wird, klicken Sie auf Linken Bereich maximieren, um ihn zu öffnen.
Maximieren Sie im Explorer Ihr Projekt und klicken Sie dann auf Datasets.
Klicken Sie auf der Seite Datasets auf Dataset erstellen.
Führen Sie im Bereich Dataset erstellen die folgenden Schritte aus:
Geben Sie unter Dataset-ID
bqml_tutorialein.Wählen Sie unter Speicherort der Daten die Option USA aus.
Übernehmen Sie die anderen Standardeinstellungen.
Klicken Sie auf Dataset erstellen.
bq
Wenn Sie ein neues Dataset erstellen möchten, verwenden Sie den Befehl bq mk --dataset.
Erstellen Sie ein Dataset mit dem Namen
bqml_tutorialund dem DatenspeicherortUS:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Prüfen Sie, ob das Dataset erstellt wurde:
bq ls
API
Rufen Sie die Methode datasets.insert mit einer definierten Dataset-Ressource auf:
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Remote-Modell erstellen
Verwenden Sie die Anweisung CREATE MODEL, um ein Remote-Modell zu erstellen, das ein gehostetes Agent Platform-gemini-3.5-flash-lite-Modell darstellt:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Führen Sie im Abfrageeditor folgende Abfrage aus:
CREATE OR REPLACE MODEL `bqml_tutorial.generate_text` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'gemini-3.5-flash-lite');
Die Abfrage dauert mehrere Sekunden. Anschließend wird das Modell
generate_textimbqml_tutorial-Dataset des Bereichs Explorer angezeigt. Da die Abfrage eineCREATE MODEL-Anweisung zum Erstellen eines Modells verwendet, gibt es keine Abfrageergebnisse.
Führen Sie die gespeicherte Prozedur aus.
Verwenden Sie die Anweisung CALL, um die gespeicherte Prozedur bqutil.procedure.bqml_generate_text auszuführen. Diese gespeicherte Prozedur durchläuft Aufrufe der Funktion ML.GENERATE_TEXT mithilfe des Modells bqml_tutorial.generate_text und der öffentlichen Tabelle bigquery-public-data.bbc_news.fulltext:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Führen Sie im Abfrageeditor folgende Abfrage aus:
CALL `bqutil.procedure.bqml_generate_text`( "bigquery-public-data.bbc_news.fulltext", -- source table "PROJECT_ID.bqml_tutorial.news_generated_text", -- destination table "PROJECT_ID.bqml_tutorial.generate_text", -- model "body", -- prompt column ["filename"], -- key columns '{"flatten_json_output": true}' -- optional arguments );
Ersetzen Sie
PROJECT_IDdurch Ihre Projekt-ID.Die gespeicherte Prozedur erstellt die
bqml_tutorial.news_generated_text-Tabelle, die die Ausgabe der FunktionML.GENERATE_TEXTenthält.Wenn die Abfrage abgeschlossen ist, bestätigen Sie, dass die Tabelle
bqml_tutorial.news_generated_textkeine Zeilen mit einem wiederholbaren Fehler enthält. Führen Sie im Abfrageeditor die folgende Anweisung aus:SELECT * FROM `bqml_tutorial.news_generated_text` WHERE ml_generate_text_status LIKE '%A retryable error occurred%';
Die Abfrage gibt die Nachricht
There is no data to displayzurück.Führen Sie im Abfrageeditor die folgende Anweisung aus, um eine Stichprobe der generierten Textergebnisse zu prüfen:
SELECT filename, prompt, ml_generate_text_llm_result, ml_generate_text_status FROM `bqml_tutorial.news_generated_text` LIMIT 3;
Die Ausgabe sieht etwa so aus:
+------------------------+------------------------------------------+-----------------------------------------------------------+-------------------------+ | filename | prompt | ml_generate_text_llm_result | ml_generate_text_status | +------------------------+------------------------------------------+-----------------------------------------------------------+-------------------------+ | bbc/tech/209.txt | A 20-year-old US man is selling... | It looks like you shared a news article about Andrew... | | | bbc/business/375.txt | South Korea's largest credit card... | It looks like you shared a news article about the 2004... | | | bbc/sport/139.txt | A brave defensive display, led by... | It looks like you have shared a match report from a... | | +------------------------+------------------------------------------+-----------------------------------------------------------+-------------------------+
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Projekt löschen
Google Cloud -Projekt löschen:
gcloud projects delete PROJECT_ID
Einzelne Ressourcen löschen
Wenn Sie das Projekt wiederverwenden möchten, löschen Sie die für diese Anleitung erstellten Ressourcen:
Console
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Löschen Sie das Dataset
bqml_tutorial. Durch das Löschen des Datasets werden auch das Remote-Modell und die Ausgabetabelle gelöscht:Maximieren Sie im Bereich Explorer Ihr Projekt und klicken Sie auf Datasets.
Klicken Sie in der Liste Datasets auf das Dataset
bqml_tutorial.Klicken Sie im Detailbereich auf Löschen.
Klicken Sie im Dialogfeld Dataset löschen auf Löschen.
bq
Löschen Sie das Dataset bqml_tutorial, das Remote-Modell und die Ausgabetabelle:
bq rm --dataset --recursive bqml_tutorial
Nächste Schritte
- Weitere Informationen zur Funktion
ML.GENERATE_TEXTund zur FunktionAI.GENERATE_TEXT - Weitere Informationen zu generativer KI in BigQuery
- Funktion zur Textgenerierung auswählen