La procédure stockée publique BigQuery bqutil.procedure.bqml_generate_text vous permet d'itérer des appels par lot à la fonction ML.GENERATE_TEXT afin de traiter de grands ensembles de données sans dépasser les quotas et limites du point de terminaison. Étant donné que les jobs de requête BigQuery se terminent même lorsque la fonction échoue sur des lignes individuelles, des volumes de requêtes élevés peuvent laisser des erreurs RESOURCE EXHAUSTED pouvant être relancées dans votre table de sortie. Dans ce tutoriel, vous allez créer un modèle distant et exécuter la procédure stockée pour relancer de manière itérative les lignes ayant échoué jusqu'à ce que tous les enregistrements d'un ensemble de données d'actualités public soient traités.
Pour examiner le code source de la procédure stockée dans GitHub, consultez bqml_generate_text.sqlx.
Pour en savoir plus sur les paramètres et l'utilisation de la procédure stockée, consultez le fichier README.
Objectifs
- Créez un ensemble de données BigQuery.
- Créez un modèle distant BigQuery ML sur un modèle
gemini-3.5-flash-lite. - Exécutez la procédure stockée
bqutil.procedure.bqml_generate_textpour générer de manière itérative du texte à partir de l'ensemble de données publicbigquery-public-data.bbc_news.fulltext. - Vérifiez les résultats du texte généré et confirmez qu'il ne reste aucune erreur de quota pouvant être relancée.
Coûts
Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :
- 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.
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Pour en savoir plus, consultez les tarifs de BigQuery et les tarifs d'Agent Platform.
Avant de commencer
-
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.
-
Activez les API BigQuery, BigQuery Connection et Agent Platform, si elles ne le sont pas déjà.
Rôles requis pour activer les API
Pour activer des API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.
Rôles requis
Pour obtenir les autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Créer et utiliser des ensembles de données, des connexions et des modèles BigQuery : Administrateur BigQuery (
roles/bigquery.admin) sur votre projet -
Accordez des autorisations au compte de service de la connexion : Administrateur IAM du projet (
roles/resourcemanager.projectIamAdmin) sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour suivre ce tutoriel. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Vous devez disposer des autorisations suivantes pour suivre ce tutoriel :
-
Créer un ensemble de données :
bigquery.datasets.create -
Créer, déléguer et utiliser une connexion :
bigquery.connections.* -
Définissez la connexion par défaut :
bigquery.config.* -
Définissez les autorisations du compte de service :
-
resourcemanager.projects.getIamPolicy -
resourcemanager.projects.setIamPolicy
-
-
Créez un modèle et exécutez l'inférence :
-
bigquery.jobs.create -
bigquery.models.create -
bigquery.models.getData -
bigquery.models.updateData -
bigquery.models.updateMetadata
-
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer un ensemble de données
Pour créer un ensemble de données BigQuery, sélectionnez l'une des options suivantes :
Console
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le volet de gauche, cliquez sur Explorateur :

Si le volet de gauche ne s'affiche pas, cliquez sur Développer le volet de gauche pour l'ouvrir.
Dans Explorateur, développez votre projet, puis cliquez sur Ensembles de données.
Sur la page Ensembles de données, cliquez sur Créer un ensemble de données.
Dans le volet Créer un ensemble de données, procédez comme suit :
Dans le champ ID de l'ensemble de données, saisissez
bqml_tutorial.Pour Emplacement des données, sélectionnez US.
Ne modifiez pas les autres paramètres par défaut.
Cliquez sur Créer un ensemble de données.
bq
Pour créer un ensemble de données, utilisez la commande bq mk --dataset.
Créez un ensemble de données nommé
bqml_tutorialavec l'emplacement des données défini surUS:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Vérifiez que l'ensemble de données a bien été créé :
bq ls
API
Appelez la méthode datasets.insert avec une ressource d'ensemble de données définie :
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Créer le modèle distant
Utilisez l'instruction CREATE MODEL pour créer un modèle distant représentant un modèle gemini-3.5-flash-lite Agent Platform hébergé :
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante :
CREATE OR REPLACE MODEL `bqml_tutorial.generate_text` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'gemini-3.5-flash-lite');
L'exécution de la requête prend plusieurs secondes, après quoi le modèle
generate_textapparaît dans l'ensemble de donnéesbqml_tutorialdans le volet Explorateur. Étant donné que la requête utilise une instructionCREATE MODELpour créer un modèle, il n'y a aucun résultat de requête.
Exécuter la procédure stockée
Utilisez l'instruction CALL pour exécuter la procédure stockée bqutil.procedure.bqml_generate_text. Cette procédure stockée effectue une itération par le biais d'appels à la fonction ML.GENERATE_TEXT à l'aide du modèle bqml_tutorial.generate_text et de la table publique bigquery-public-data.bbc_news.fulltext :
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante :
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 );
Remplacez
PROJECT_IDpar l'ID du projet.La procédure stockée crée la table
bqml_tutorial.news_generated_textpour contenir le résultat de la fonctionML.GENERATE_TEXT.Une fois l'exécution de la requête terminée, vérifiez qu'aucune ligne de la table
bqml_tutorial.news_generated_textne contient d'erreur pouvant faire l'objet d'une nouvelle tentative. Dans l'éditeur de requête, exécutez l'instruction suivante :SELECT * FROM `bqml_tutorial.news_generated_text` WHERE ml_generate_text_status LIKE '%A retryable error occurred%';
La requête renvoie le message
There is no data to display.Dans l'éditeur de requête, exécutez l'instruction suivante pour inspecter un échantillon des résultats de texte générés :
SELECT filename, prompt, ml_generate_text_llm_result, ml_generate_text_status FROM `bqml_tutorial.news_generated_text` LIMIT 3;
Le résultat ressemble à ce qui suit :
+------------------------+------------------------------------------+-----------------------------------------------------------+-------------------------+ | 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... | | +------------------------+------------------------------------------+-----------------------------------------------------------+-------------------------+
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
Supprimer un projet Google Cloud :
gcloud projects delete PROJECT_ID
Supprimer des ressources individuelles
Si vous souhaitez réutiliser le projet, supprimez les ressources que vous avez créées pour ce tutoriel :
Console
Dans la console Google Cloud , accédez à la page BigQuery.
Supprimer l'ensemble de données
bqml_tutorialLa suppression de l'ensemble de données supprime également le modèle distant et la table de sortie :Dans le volet Explorateur, développez votre projet et cliquez sur Ensembles de données.
Dans la liste Ensembles de données, cliquez sur l'ensemble de données
bqml_tutorial.Dans le volet Détails, cliquez sur Supprimer.
Dans la boîte de dialogue Supprimer l'ensemble de données, cliquez sur Supprimer.
bq
Supprimez l'ensemble de données bqml_tutorial, le modèle distant et la table de sortie :
bq rm --dataset --recursive bqml_tutorial
Étapes suivantes
- En savoir plus sur la fonction
ML.GENERATE_TEXTet la fonctionAI.GENERATE_TEXT. - En savoir plus sur l'IA générative dans BigQuery
- Découvrez comment choisir une fonction de génération de texte.