L'Agent d'ingénierie des données vous permet de créer, de modifier et de résoudre les problèmes liés aux pipelines de données dans BigQuery à l'aide de requêtes en langage naturel. L'Agent d'ingénierie des données offre les fonctionnalités suivantes pour simplifier vos workflows d'ingénierie des données afin d'ingérer des données dans BigQuery :
- Intégration de Dataform : l'agent génère et organise le code du pipeline de données directement dans les dépôts et espaces de travail Dataform.
- Génération de plans : l'agent peut résumer sa réflexion et générer un plan qui vous permet de l'examiner et de le vérifier avant de continuer.
- Validation du code : l'agent valide et corrige automatiquement les erreurs de compilation de tout code généré pour s'assurer que le pipeline de données est fonctionnel.
- Data wrangling automatique : l'agent effectue le data wrangling et transforme les données brutes en tables structurées sans intervention manuelle.
- Instructions personnalisées : l'agent est compatible avec les instructions personnalisées qui vous permettent de définir des règles spécifiques et des consignes réutilisables en langage naturel.
- Contexte externe : l'agent est intégré à Knowledge Catalog pour obtenir un contexte supplémentaire.
- Contrôle du pipeline : vous pouvez examiner et personnaliser les plans d'agent générés avant l'exécution de toute action.
- Optimisation : l'agent peut optimiser les performances de votre pipeline de données.
- Dépannage et réparation : l'agent peut résoudre les problèmes liés aux échecs de pipeline et corriger son code.
- Recommandations interactives : l'agent fournit des recommandations interactives et contextuelles au début et tout au long de la session.
Où utiliser l'Agent d'ingénierie des données ?
Vous pouvez utiliser l'Agent d'ingénierie des données avec les méthodes suivantes :
- Créez des pipelines de données à partir de l'interface des pipelines BigQuery ou dans Dataform.
- Installez l'extension Google Cloud Data Agent Kit dans Visual Studio Code pour créer des pipelines de données à partir de votre environnement de développement intégré (IDE).
- Utilisez l'API de l'Agent d'ingénierie des données.
Comment l'Agent d'ingénierie des données utilise-t-il vos données ?
Pour produire des réponses d'agent de meilleure qualité, l'Agent d'ingénierie des données peut récupérer des données et des métadonnées supplémentaires à partir de BigQuery et de Knowledge Catalog, y compris des exemples de lignes de tables BigQuery et des profils d'analyse de données générés dans Knowledge Catalog. L'agent n'utilise pas ces données pour l'entraînement. Il ne les utilise que comme contexte supplémentaire lors des conversations avec l'agent pour informer ses réponses.
Où l'Agent d'ingénierie des données traite-t-il vos données ?
Pour en savoir plus sur les emplacements où l'Agent d'ingénierie des données traite vos données, consultez la page Où Gemini dans BigQuery traite-t-il vos données ?
Limites
L'Agent d'ingénierie des données présente les limites suivantes :
- L'Agent d'ingénierie des données n'est pas compatible avec les commandes en langage naturel pour les types de fichiers suivants :
- Notebooks
- Préparation des données
- L'Agent d'ingénierie des données ne peut pas exécuter de pipelines. Vous devez examiner, exécuter ou planifier les pipelines.
- L'Agent d'ingénierie des données ne peut pas rechercher de liens Web ni d'URL fournis par le biais d'instructions ou de requêtes directes.
- Lors de l'importation de fichiers dans un
fichier d'instructions d'agent,
la syntaxe d'importation
@n'est compatible qu'avec les chemins commençant par./,/ou une lettre. - La fonctionnalité d'aperçu des données n'est compatible qu'avec les
tables, les déclarations ou les requêtes dont l'indicateur
hasOutputest défini surtrue. - L'Agent d'ingénierie des données est soumis aux limitations générales de la technologie d'IA.
- Lorsque vous créez des pipelines sur des tables externes Apache Iceberg gérées par le catalogue d'exécution Lakehouse (anciennement BigLake Metastore), toutes les limites du catalogue d'exécution Lakehouse s'appliquent. Plus précisément, l'agent ne peut pas générer de mutations d'écriture (telles que
INSERT,UPDATE,DELETEouMERGE) ni d'instructions LDD (telles queCREATE TABLEouDROP TABLE) sur les tables Iceberg. Pour en savoir plus, consultez Concepts de point de terminaison de catalogue REST Apache Iceberg.
Fonctionnalités et personnalisations de l'agent
Les sections suivantes décrivent les fonctionnalités supplémentaires de l'agent et d'autres méthodes de personnalisation de l'Agent d'ingénierie des données.
Instructions pour l'agent
Les instructions pour l'agent sont des instructions en langage naturel destinées à l'Agent d'ingénierie des données qui vous permettent de stocker des instructions persistantes afin que l'agent suive un ensemble de règles personnalisées prédéfinies. Utilisez des instructions pour l'agent si vous souhaitez que les résultats de l'agent soient cohérents dans toute votre organisation, par exemple avec des conventions d'attribution de noms ou pour appliquer un guide de style.
Pour créer des instructions pour l'Agent d'ingénierie des données, créez un
GEMINI.MD fichier
de contexte
en tant que fichier d'instructions pour l'agent.
Bonnes pratiques concernant les fichiers d'instructions pour l'agent
Lorsque vous utilisez des instructions pour l'agent, nous vous recommandons de procéder comme suit :
- Tous les chemins d'accès aux fichiers dans Dataform sont relatifs à la racine du dépôt. Utilisez des chemins d'accès relatifs pour toute syntaxe
@file.mdafin d'importer correctement les instructions dansGEMINI.md. - Les fichiers importés dans
GEMINI.mdpeuvent eux-mêmes contenir des importations, ce qui peut créer une structure imbriquée. Pour éviter une récursivité infinie,GEMINI.mda une profondeur d'importation maximale de cinq niveaux. - Pour partager des instructions entre les pipelines de données, stockez-les dans un dépôt Dataform central et associez-les au dépôt Dataform de travail. Vous pouvez utiliser des instructions locales pour remplacer les règles centrales pour un comportement spécifique au pipeline.
- Pour garantir la cohérence de votre projet, vous pouvez créer un lien vers des fichiers de convention d'attribution de noms ou des guides de style, et demander à l'agent de suivre ces consignes lorsque vous travaillez avec vos pipelines de données.
- Vous pouvez suggérer des couches de données dans le fichier d'instructions pour regrouper différents types de données.
- L'utilisation de titres et de listes dans le fichier d'instructions pour l'agent peut vous aider à organiser et à clarifier les instructions pour l'Agent d'ingénierie des données.
- Fournissez des noms de fichiers explicites et regroupez les instructions similaires dans un fichier. Organisez les règles de manière logique par catégorie, fonctionnalité ou fonction à l'aide de titres Markdown.
- Pour éviter les instructions conflictuelles, définissez clairement les conditions spécifiques dans lesquelles chaque instruction s'applique.
- Itérez et affinez vos requêtes et votre workflow. Le comportement de l'agent évolue au fil du temps avec les déploiements d'agents et les mises à niveau de modèles. Nous vous recommandons donc d'itérer vos règles avec différentes requêtes pour identifier les points à améliorer. Maintenez votre fichier de règles synchronisé avec toutes les modifications apportées à votre pipeline de données.
L'exemple suivant montre un fichier d'instructions pour l'agent nommé GEMINI.md qui utilise nos bonnes pratiques pour une utilisation efficace de l'Agent d'ingénierie des données :
### Naming Conventions
* Datasets: [business_domain]_[use_case] (e.g., ecommerce_sales)
* Tables:
- Raw/External: raw_[source_name]
- Staging: stg_[business_entity]
- Dimension: dim_[dimension_name]
- Fact: fct_[fact_name]
* Dataform Folders:
- sources
- staging
- marts
- dataProducts
* Views: vw_[view_name]
* Columns: snake_case (e.g., order_id, customer_name)
## Cloud Storage data load
* When ingesting data from Cloud Storage, create external tables.
## Null handling
* Filter out null id values
## String normalization
* Standardize string columns by converting to lower case
## Data Cleaning Guidelines
@./generic_cleaning.md
Importer des fichiers locaux supplémentaires en tant qu'instructions pour l'agent
Vous pouvez également importer d'autres fichiers d'instructions pour l'Agent d'ingénierie des données dans le fichier GEMINI.md avec la syntaxe @file.md. Pour en savoir plus, consultez Processeur d'importation de mémoire.
Préparation automatique des données
Vous pouvez utiliser l'Agent d'ingénierie des données pour transformer des données brutes non traitées en tables structurées adaptées à l'analyse des données. Sur demande, l'agent échantillonne d'abord jusqu'à 1 000 000 d'enregistrements de chaque table standard ou externe. L'agent effectue ensuite une analyse approfondie des données en exécutant des requêtes de profilage sur cet échantillon. Après avoir généré des transformations de données, l'agent répète ce processus d'échantillonnage et de profilage pour évaluer la qualité des transformations. Ces transformations de data wrangling peuvent inclure la correction d'incohérences, d'anomalies ou de types de données non concordants. L'Agent d'ingénierie des données crée ensuite un plan qui décrit les étapes de préparation proposées que vous pouvez examiner et affiner avant toute action.
L'Agent d'ingénierie des données lance également l'analyse de data wrangling chaque fois que vous ajoutez une table brute, telle qu'une table externe basée sur un fichier CSV. Vous pouvez examiner le plan de préparation des données et l'ajuster à l'aide de commandes conversationnelles.
L'échantillonnage de données et le profilage utilisent des ressources BigQuery et sont soumis à la tarification BigQuery.
L'Agent d'ingénierie des données est compatible avec les transformations de data wrangling suivantes :
- Nettoyage des données. L'agent peut analyser les données brutes et suggérer des opportunités de nettoyage, par exemple en supprimant les valeurs aberrantes, en remplissant les valeurs manquantes ou incohérentes (imputation de données), en corrigeant les doublons ou en normalisant les formats de données (numéros de téléphone ou adresses, par exemple).
- Transformations structurelles. Lorsqu'un schéma cible est fourni, l'agent peut annuler l'imbrication ou extraire des valeurs à partir de types
JSON,ARRAYouSTRUCT, fusionner plusieurs colonnes en une seule ou diviser une colonne en plusieurs colonnes. - Détection et conversion des types de données. L'agent peut analyser les données pour déterminer les types de champs appropriés. L'agent peut ensuite effectuer une conversion de type sécurisée pour résoudre les incohérences de mise en forme dans les champs de date, d'heure, de date/heure ou d'horodatage.
- Conversions d'unités. L'agent peut convertir automatiquement différentes unités d'un champ en une seule unité cohérente pour normaliser vos données.
Pour garantir l'exactitude, l'agent utilise des échantillons représentatifs de vos données afin de détecter les problèmes et de valider sa logique de transformation.
Générer et examiner les plans d'agent
L'Agent d'ingénierie des données peut générer des plans d'agent qui fournissent un résumé et une présentation des objectifs et des étapes nécessaires pour répondre à une requête. Lorsque vous demandez à l'agent d'effectuer des requêtes complexes nécessitant de nombreuses modifications, nous vous recommandons de lui demander de vous fournir un plan d'agent afin que vous puissiez examiner ses intentions avant qu'il n'effectue des actions. Un plan d'Agent d'ingénierie des données se compose généralement des éléments suivants :
- L'objectif de l'agent pour une requête particulière
- Une présentation générale des étapes que l'agent prévoit de suivre
- Toutes les hypothèses formulées par l'agent
- Les fichiers que l'agent prévoit de modifier
- Toutes les étapes d'optimisation ou de nettoyage qu'il prévoit d'effectuer
- Un plan d'exécution par étapes
Dans votre requête, vous pouvez inclure la nécessité d'examiner et d'approuver le plan afin que l'agent n'effectue aucune action sans votre approbation explicite. Exemple :
Create a plan for a pipeline that finds the top N pick up and drop off locations in NYC. I want to review the plan and approve it before you create the pipeline.
L'agent peut également générer automatiquement un plan d'agent et demander votre approbation. Ce résultat peut se produire lorsqu'une requête est trop ambiguë ou si l'agent a besoin de plus de clarté pour répondre à votre requête.
Pour connaître les bonnes pratiques concernant l'utilisation des plans d'agent, consultez Bonnes pratiques.
Ajouter un contexte à partir de Knowledge Catalog
L'Agent d'ingénierie des données utilise Knowledge Catalog en associant des termes de glossaire aux tables et colonnes BigQuery, et en générant des analyses de profil de données. Les termes de glossaire peuvent baliser des colonnes qui nécessitent un contexte supplémentaire, telles que les colonnes contenant des informations permettant d'identifier personnellement l'utilisateur qui nécessitent des instructions de traitement spéciales, ou identifier des colonnes correspondantes avec des noms différents dans les tables.
Knowledge Catalog utilise également le profilage des données, ce qui permet à l'agent de mieux comprendre la distribution des données dans les colonnes de la table et de créer des assertions de qualité des données plus spécifiques.
L'agent peut également utiliser Knowledge Catalog pour découvrir et interroger des tables Apache Iceberg. Pour en savoir plus, consultez Créer des pipelines sur des tables Apache Iceberg.
Ajouter des vérifications de la qualité des données à une table existante
Lorsque vous demandez à l'agent d'ajouter des vérifications de la qualité, il déduit des vérifications raisonnables pour la table en fonction du schéma et des exemples. Vous pouvez également ajouter des assertions subjectives dans la requête. Exemple :
Add data quality checks for bigquery-public-data.thelook_ecommerce.users.
Optimiser les pipelines de données
Vous pouvez demander à l'agent d'optimiser vos pipelines de données. Lors de la génération de LDD pour les nouvelles tables, l'Agent d'ingénierie des données recommande le partitionnement et le clustering en fonction des modèles d'utilisation des données analysés. De plus, l'agent peut appliquer automatiquement d'autres optimisations de pipeline. Voici quelques exemples d'optimisations possibles :
- Élagage des colonnes pour réduire la lecture des données à partir du stockage afin d'agir comme un moteur principal de coûts et de performances.
- Pushdown des prédicats pour filtrer les données au début du plan d'exécution afin de réduire considérablement le volume traité par les opérations suivantes.
- Élimination des sous-expressions communes pour améliorer l'efficacité en identifiant et en calculant la logique de transformation partagée une seule fois, ce qui évite les pratiques inefficaces telles que l'analyse et la jointure de grandes tables à plusieurs reprises.
- Modèles incrémentaux pour traiter uniquement les données nouvelles ou modifiées depuis la dernière exécution au lieu de reconstruire des tables entières à chaque exécution.
Créer des pipelines sur des tables Apache Iceberg
L'Agent d'ingénierie des données est compatible avec la génération et la compilation de pipelines Dataform sur des tables Apache Iceberg gérées par le catalogue d'exécution Lakehouse (anciennement BigLake Metastore). Cette fonctionnalité vous permet d'interroger et de joindre des tables au format Open Source régional (stockées dans Cloud Storage) directement à côté de vos tables BigQuery. Pour en savoir plus, consultez Concepts de point de terminaison de catalogue REST Apache Iceberg.
Par exemple, vous pouvez demander à l'agent d'interroger une table Apache Iceberg dans le catalogue d'exécution Lakehouse :
Include the stackoverflow_post_history_iceberg table in this pipeline.
Dans vos requêtes, vous n'avez pas besoin de spécifier des chemins d'accès en quatre parties complets, par exemple project.catalog.dataset.table. Vous pouvez faire référence aux tables Apache Iceberg à l'aide de noms en langage naturel standards ou d'identifiants logiques, par exemple the StackOverflow post history table ou post_history. L'agent appelle automatiquement des recherches de catalogue sémantiques à l'aide de Knowledge Catalog pour résoudre et lier les tables Apache Iceberg correctes à votre espace de travail de pipeline.
Pour utiliser cette fonctionnalité, votre dépôt Dataform doit utiliser la version 3.0.33 ou une version ultérieure de Dataform Core.
Recommandations interactives
L'Agent d'ingénierie des données analyse l'état de compilation de votre espace de travail, l'historique d'exécution et l'état de conversation actif pour fournir des recommandations exploitables directement dans l'interface de chat. Ces suggestions s'affichent automatiquement lorsque vous ouvrez un espace de travail et tout au long de la session pour fournir des recommandations concernant la configuration, le dépannage et les optimisations afin de guider votre workflow.
Pour utiliser une recommandation, cliquez sur l'une des suggestions sous Recommandations de l'IA. La requête est alors chargée dans la barre de saisie du chat, que vous pouvez modifier ou personnaliser avant de l'envoyer à l'agent. Vous pouvez également passer la souris sur une suggestion pour afficher la requête exacte.
Bonnes pratiques
Pour améliorer les résultats lorsque vous travaillez avec l'Agent d'ingénierie des données et Dataform, nous vous recommandons de procéder comme suit :
Utilisez des instructions pour l'agent pour les requêtes courantes. Si vous appliquez généralement certaines techniques ou si vous apportez fréquemment les mêmes corrections à l'agent, utilisez des instructions pour l'agent comme emplacement centralisé pour stocker les instructions et les requêtes courantes.
Utilisez des plans d'agent. Les plans d'agent peuvent être utiles pour décomposer les tâches complexes du pipeline. Les plans d'agent peuvent également vous montrer les hypothèses et les intentions de l'agent. Nous vous recommandons donc de les examiner pour vous assurer que l'agent dispose du contexte approprié.
Après avoir examiné un plan, vous pouvez le modifier en demandant à l'Agent d'ingénierie des données de vous faire part de ses commentaires et de ses modifications. Exemple :
In the plan, ensure that all of the intermediate tables are views.
Dans certains cas, il peut être utile de demander à l'agent de générer un plan qui ne nécessite pas votre approbation explicite. Le fait de créer le plan d'agent oblige l'Agent d'ingénierie des données à décomposer ses actions, ce qui conduit souvent à de meilleurs résultats. Vous pouvez forcer l'agent à générer un plan et à l'exécuter automatiquement. Exemple :
Create a plan for a pipeline that finds the
top N pick up and drop off locations in NYC. You have my explicit pre-approval
to go ahead and execute this plan.
Écrivez de manière claire. Énoncez votre demande clairement et évitez d'être vague. Dans la mesure du possible, fournissez des sources de données source et de destination lorsque vous y êtes invité, comme illustré dans l'exemple suivant :
Extract data from the sales.customers table in the us_west_1 region, and load
it into the reporting.dim_customers table in BigQuery. Match the schema of the
destination table.
Fournissez des requêtes directes et ciblées. Posez une question à la fois et soyez concis. Pour les requêtes comportant plusieurs questions, détaillez chaque partie distincte de la question pour améliorer la clarté, comme illustré dans l'exemple suivant :
1. Create a new table named staging.events_cleaned. Use raw.events as the
source. This new table should filter out any records where the user_agent
matches the pattern '%bot%'. All original columns should be included.
2. Next, create a table named analytics.user_sessions. Use
staging.events_cleaned as the source. This table should calculate the
duration for each session by grouping by session_id and finding the
difference between the MAX(event_timestamp) and MIN(event_timestamp).
Fournissez des instructions explicites et mettez l'accent sur les termes clés. Vous pouvez mettre l'accent sur les termes ou concepts clés de vos requêtes et indiquer que certaines exigences sont importantes, comme illustré dans l'exemple suivant :
When creating the staging.customers table, it is *VERY IMPORTANT* that you
transform the email column from the source table bronze.raw_customers.
Coalesce any NULL values in the email column to an empty string ''.
Spécifiez l'ordre des opérations. Pour les tâches ordonnées, structurez votre requête dans des listes, où les éléments listés sont divisés en petites étapes ciblées, comme illustré dans l'exemple suivant :
Create a pipeline with the following steps:
1. Extract data from the ecomm.orders table.
2. Join the extracted data with the marts.customers table on customer_id.
3. Load the final result into the reporting.customer_orders table.
Affinez et itérez. Essayez différentes expressions et approches pour voir ce qui donne les meilleurs résultats. Si l'agent génère du code SQL non valide ou d'autres erreurs, guidez-le à l'aide d'exemples ou de la documentation publique.
The previous query was incorrect because it removed the timestamp. Please
correct the SQL. Use the TIMESTAMP_TRUNC function to truncate the
event_timestamp to the nearest hour, instead of casting it as a DATE. For
example: TIMESTAMP_TRUNC(event_timestamp, HOUR).