Knowledge Catalog (anciennement Dataplex Universal Catalog) vous permet d'importer des métadonnées opérationnelles, sémantiques et de traçabilité depuis dbt Core, dbt Cloud et MetricFlow à l'aide de la Google Cloud CLI et de vos fichiers d'artefacts dbt. Au lieu de laisser les métadonnées de transformation cloisonnées dans l'écosystème dbt, vous pouvez les centraliser pour aider les ingénieurs de données, les ingénieurs d'analyse et les intendants de données à découvrir et à gouverner les données d'entreprise.
Métadonnées importées et cas d'utilisation
Étant donné que dbt Core fonctionne comme un moteur de transformation plutôt que comme un système de stockage tel qu'Oracle ou PostgreSQL, l'importation de ses métadonnées permet de répondre à différents cas d'utilisation. Vous importez des métadonnées Oracle ou PostgreSQL pour répondre à la question "Quelles données brutes avons-nous ?", et vous importez des métadonnées dbt Core pour répondre à la question "Comment nos données sont-elles transformées, sont-elles fiables et que signifient-elles pour l'entreprise ?".
Lorsque vous exécutez l'intégration dbt, vous capturez les métadonnées suivantes :
- Métadonnées techniques : découvrez les données d'entreprise en explorant les ressources clés (sources, seeds, modèles) et leurs propriétés techniques (noms de colonnes, types de données, nombre de lignes).
- Métadonnées métier et sémantiques : fournissez du contexte aux outils de BI et aux agents IA en explorant les définitions et la logique métier optimisées par dbt MetricFlow, telles que les modèles sémantiques, les métriques et les requêtes enregistrées.
- Métadonnées opérationnelles et de qualité des données : surveillez l'état du pipeline et résolvez les problèmes de données en explorant les métadonnées d'exécution telles que le temps, l'état de réussite ou d'échec, la fraîcheur des données et les résultats des tests.
- Métadonnées de traçabilité et de relation : effectuez une analyse d'impact en aval et un traçage des causes principales en explorant les graphiques de transformation (DAG) et les dépendances entre les ressources dbt, la traçabilité physique qui suit et associe les blocs de transformation physique, les clés de jointure et les jointures dynamiques, ainsi que les relations parent-enfant.
- Métadonnées de consommation : résolvez les problèmes liés à la façon dont les applications en aval consomment les données transformées en explorant les métadonnées capturées dans les expositions qui mappent l'utilisation des données en dehors de dbt.
Limites
- Compatible avec dbt Core v1 (validé avec les versions 1.11 et 1.12), dbt Core v2 et dbt Fusion.
- La version 586.0.0 et les versions ultérieures de gcloud CLI sont compatibles avec l'intégration de dbt et de Knowledge Catalog. Pour installer ou mettre à jour la CLI, consultez Installer la Google Cloud CLI.
- Il n'existe pas de connexion directe à dbt Cloud. Pour importer des métadonnées à partir d'un job dbt Cloud, commencez par récupérer les artefacts du job. Consultez Importer des métadonnées à partir d'exécutions dbt Cloud.
- Les schémas très volumineux ou profondément imbriqués sont tronqués : un seul aspect ne peut pas dépasser la limite de taille par aspect. Par conséquent, les schémas profondément imbriqués peuvent perdre des champs de fin.
--aspects-onlypeut ajouter et actualiser des métadonnées, mais pas les supprimer. La suppression d'une ressource dbt nécessite une exécution complète.- Cette intégration n'est compatible qu'avec les événements de traçabilité dbt sur les ressources BigQuery dans l'API Data Lineage et le graphique. Les entrées dbt (sources, graines, modèles) pour les sources tierces externes ne sont pas capturées dans la traçabilité des données.
- Pour ingérer tous les événements de traçabilité dbt dans l'API Data Lineage, utilisez l'intégration dbt OpenLineage. Ensuite, intégrez OpenLineage à Knowledge Catalog pour importer et visualiser la traçabilité des données depuis dbt.
Avant de commencer
Avant de pouvoir importer des métadonnées depuis dbt Core et MetricFlow, effectuez les tâches suivantes :
- Accordez les rôles et autorisations requis.
- Activez l'API Dataplex.
- Remplissez les conditions préalables pour dbt.
- Créez le groupe d'entrées de destination s'il n'existe pas déjà.
- Comprendre les rôles Cloud Storage
Rôles et autorisations IAM
Pour créer et gérer un job de connecteur Knowledge Catalog, vous avez besoin de rôles IAM (Identity and Access Management) qui accordent des autorisations pour Knowledge Catalog et Cloud Storage.
Pour obtenir les autorisations nécessaires pour configurer un connecteur dbt, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Pour créer et gérer des groupes d'entrées et des liens d'entrée : Administrateur de catalogue Dataplex (
roles/dataplex.catalogAdmin), Éditeur de catalogue Dataplex (roles/dataplex.catalogEditor) ou Propriétaire du groupe d'entrées Dataplex (roles/dataplex.entryGroupOwner) sur le projet. Pour exécuter la commande dbt
gcloudet créer des jobs d'importation de métadonnées, suivez le principe du moindre privilège et attribuez les rôles suivants :- Propriétaire de jobs de métadonnées Dataplex (
roles/dataplex.metadataJobOwner) sur le projet. - Importateur de groupe d'entrées Dataplex (
roles/dataplex.entryGroupImporter) sur le groupe d'entrées ou le projet cible. Si vous importez également des liens d'entrée, accordez plutôt le rôle Propriétaire du groupe d'entrées Dataplex (roles/dataplex.entryGroupOwner) sur le projet. Accordez également le rôle Propriétaire d'entrée Dataplex (roles/dataplex.entryOwner) sur chaque projet contenant les tables BigQuery dans lesquelles vos modèles dbt écrivent. Pour les rôles personnalisés, les autorisations de lien d'entrée sontdataplex.entryGroups.useReferenceEntryLink,dataplex.entryGroups.useSchemaJoinEntryLinketdataplex.entryLinks.reference.
Vous pouvez également accorder les rôles Administrateur de catalogue Dataplex (
roles/dataplex.catalogAdmin) et Propriétaire de jobs de métadonnées Dataplex (roles/dataplex.metadataJobOwner) sur le projet.- Propriétaire de jobs de métadonnées Dataplex (
Pour importer des métadonnées transformées dans le bucket de préproduction de sortie (
--storage-uri) : Créateur d'objets Storage (roles/storage.objectCreator) ou Administrateur des objets Storage (roles/storage.objectAdmin) sur le bucket de préproduction.Pour lire les artefacts dbt à partir d'un bucket Cloud Storage d'entrée (
--artifacts-path, si vous utilisez Cloud Storage) : Lecteur des objets Storage (roles/storage.objectViewer) ou Administrateur des objets Storage (roles/storage.objectAdmin) sur le bucket d'artefacts d'entrée. Si vous disposez du rôle d'administrateur des objets Storage, le rôle de lecteur des objets Storage n'est pas requis.Pour afficher les métadonnées dbt : Lecteur de catalogue Dataplex (
roles/dataplex.catalogViewer) sur le projet.Pour afficher les journaux dans Cloud Logging : Lecteur de journaux (
roles/logging.viewer) sur le projet.
Si vous disposez des autorisations nécessaires pour gérer l'accès IAM dans votre projet, vous pouvez accorder ces rôles à votre propre compte utilisateur en exécutant les commandes gcloud suivantes :
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:USER_EMAIL" \
--role="roles/dataplex.metadataJobOwner"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:USER_EMAIL" \
--role="roles/dataplex.entryGroupOwner"
gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET \
--member="user:USER_EMAIL" \
--role="roles/storage.objectCreator"
Si vous exécutez l'importation à l'aide d'un compte de service, par exemple dans un pipeline CI/CD automatisé, vous pouvez attribuer ces rôles au compte de service en exécutant les commandes gcloud suivantes :
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role="roles/dataplex.metadataJobOwner"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role="roles/dataplex.entryGroupOwner"
gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET \
--member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role="roles/storage.objectCreator"
De plus, vous devez attribuer à l'agent de service Knowledge Catalog (service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com) le rôle Lecteur des objets Storage (roles/storage.objectViewer) sur le bucket Cloud Storage de préproduction de sortie (--storage-uri) afin que le job d'importation puisse lire le fichier de métadonnées préproduit :
gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
--role="roles/storage.objectViewer"
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .USER_EMAIL: l'adresse e-mail de votre compte utilisateur.SERVICE_ACCOUNT_EMAIL: adresse e-mail de votre compte de service.STAGING_BUCKET: nom de votre bucket Cloud Storage de préproduction de sortie (--storage-uri).PROJECT_NUMBER: numéro de votre projet Google Cloud .
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Activer les API
Activer l'API Dataplex
Prérequis dbt
Pour importer l'ensemble des métadonnées dbt, nous vous recommandons de produire les quatre fichiers d'artefacts JSON dbt. Seul manifest.json est obligatoire. Les autres enrichissent l'importation, et la transformation se dégrade de manière fluide sans eux :
manifest.json(obligatoire) : structure du projet principal et graphique d'exécution. Contient également les modèles sémantiques, les métriques et les requêtes enregistrées MetricFlow.catalog.json: noms de colonnes et types de données. Sanscatalog.json, l'aspect du schéma est importé avec des colonnes non typées.- : résultats des tests et métadonnées d'exécution.
run_results.json sources.json: fraîcheur de la source.
Dans votre terminal local, Cloud Shell ou l'environnement CI/CD automatisé où dbt est installé, accédez au répertoire racine du projet dbt et exécutez les commandes dbt suivantes dans l'ordre sur un seul profil et une seule cible pour générer l'ensemble complet des fichiers JSON d'artefacts de métadonnées dbt :
Pour dbt Core 2.x et dbt Fusion :
dbt source freshnessdbt builddbt parse --write-catalog
Pour dbt Core 1.x (où
dbt parsen'écrit pas de catalogue) :dbt source freshnessdbt builddbt docs generate --no-compile
Comprendre les rôles Cloud Storage
L'importation de métadonnées dbt implique deux emplacements Cloud Storage distincts qui ont des objectifs différents et ne doivent pas être confondus :
- Entrée (artefacts sources dbt) : emplacement de vos fichiers JSON dbt générés. Il peut s'agir d'un chemin d'accès au répertoire local sur votre machine ou votre exécuteur d'intégration continue (par exemple,
./target/ou.) ou d'un préfixe d'URI de bucket Cloud Storage d'entrée (par exemple,gs://my-dbt-artifacts-bucket/target/). Vous fournissez ce chemin d'accès à l'aide de l'option--artifacts-path. La commandegcloudlit ces fichiers d'entrée lors de la préparation du job. L'appelant qui exécute la commandegclouddoit disposer d'un accès en lecture (roles/storage.objectViewerouroles/storage.objectAdmin) s'il utilise Cloud Storage. L'agent de service Knowledge Catalog n'a pas besoin d'accéder au bucket d'artefacts d'entrée. - Sortie (bucket de préproduction d'importation Knowledge Catalog) : préfixe d'URI de bucket Cloud Storage (tel que
gs://my-staging-bucket/dbt-imports/) où la commandegcloudimporte le fichier d'importation de métadonnées transformé (dbt_metadata.jsonl) et à partir duquel le job d'importation Knowledge Catalog lit pendant l'ingestion. Vous fournissez cet URI à l'aide de l'option--storage-uri. L'appelant qui exécute la commandegclouddoit disposer d'un accès en écriture (roles/storage.objectCreatorouroles/storage.objectAdmin) pour importer le fichier, et l'agent de service Knowledge Catalog doit disposer d'un accès en lecture (roles/storage.objectViewer) pour l'importer.
Importer des métadonnées à partir d'exécutions dbt Cloud
Knowledge Catalog ne se connecte pas directement à dbt Cloud. Étant donné qu'un job dbt Cloud génère les mêmes fichiers d'artefact que dbt Core, vous pouvez importer des métadonnées depuis dbt Cloud en récupérant ces fichiers d'artefact dans un répertoire local ou un bucket Cloud Storage d'entrée, puis en exécutant la commande gcloud.
Avant de récupérer les artefacts, configurez le job dbt Cloud pour générer l'ensemble complet d'artefacts. Vous pouvez ensuite récupérer les fichiers d'artefact à partir d'une exécution de job dbt Cloud à l'aide de l'une des méthodes suivantes :
- Télécharger des artefacts depuis la console dbt Cloud : téléchargez manuellement les fichiers d'artefacts depuis la page d'informations sur l'exécution du job dans l'interface utilisateur dbt Cloud pour les importations ponctuelles ou les tests initiaux.
- Télécharger des artefacts à l'aide de la CLI de la plate-forme dbt : exécutez des commandes dbt sur dbt Cloud depuis votre terminal local pour enregistrer automatiquement les artefacts générés dans le répertoire de votre projet local pendant le développement.
- Télécharger des artefacts à l'aide de l'API dbt Administrative : récupérez de manière programmatique les artefacts des exécutions terminées via HTTP pour les pipelines automatisés et planifiés.
Configurer le job dbt Cloud
Dans la console dbt Google Cloud , configurez les paramètres de votre job pour générer l'ensemble complet d'artefacts de métadonnées :
- Dans la section Paramètres d'exécution, sélectionnez Exécuter l'actualisation de la source.
dbt Cloud exécute
dbt source freshnessavant les commandes de job pour générersources.json. - Dans la section Commandes, ajoutez
dbt build. - Ajoutez une commande pour générer
catalog.jsonen fonction de votre canal de publication :- Pour les canaux de publication dbt Core 2.x et dbt Fusion : ajoutez
dbt parse --write-catalogen tant que commande de job. - Pour les canaux de publication dbt Core 1.x : ajoutez
dbt docs generate --no-compileen tant que commande de job au lieu de sélectionner l'option Générer des documents lors de l'exécution. La case Générer des documents lors de l'exécution exécutedbt docs generatesans--no-compile, ce qui écrase les résultats de test dedbt build, comme décrit dans la section Prérequis dbt. Notez que si une étape de commande échoue, le job échoue également, tandis que l'étape de case à cocher ne fait pas échouer le job.
- Pour les canaux de publication dbt Core 2.x et dbt Fusion : ajoutez
Si dbt build échoue, par exemple en raison de l'échec d'un test, dbt Cloud ignore les commandes qui suivent et l'exécution n'a pas de catalog.json. Pour toujours en produire un, ajoutez la commande de catalogue avant dbt build. Le catalogue décrit ensuite les tables telles qu'elles étaient avant la compilation.
Pour en savoir plus, consultez Commandes de job et Canaux de publication dans la documentation dbt.
Télécharger des artefacts depuis la console dbt Google Cloud
Pour télécharger manuellement les artefacts d'une exécution terminée dans la console dbtGoogle Cloud :
- Dans la console dbt Google Cloud , ouvrez l'exécution de job terminée.
- Accédez à l'onglet Artefacts pour afficher les fichiers d'artefact générés.
- Téléchargez
manifest.json,catalog.json,run_results.jsonetsources.jsondans un répertoire local. - Dans votre terminal local ou Cloud Shell, exécutez la commande d'importation
gclouddécrite dans Configurer la connectivité dbt et définissez--artifacts-pathsur le répertoire contenant les fichiers téléchargés.
Pour en savoir plus, consultez Visibilité de l'exécution dans la documentation dbt.
Télécharger des artefacts à l'aide de la CLI de la plate-forme dbt
La CLI de la plate-forme dbt (anciennement CLI dbt Cloud) exécute des commandes dbt sur la plate-forme dbt Cloud à partir de votre terminal local et télécharge automatiquement les artefacts générés dans le répertoire target/ de votre projet dbt local.
- Dans votre terminal local, accédez au répertoire racine de votre projet dbt et exécutez les trois commandes listées dans Prérequis dbt.
- Exécutez la commande d'importation
gclouddécrite dans Configurer la connectivité dbt et définissez--artifacts-pathsur la racine du projet ou sur le répertoiretarget/.
La CLI s'exécute dans votre environnement de développement à l'aide de vos identifiants d'entrepôt de données personnels. Les métadonnées générées reflètent donc votre schéma de développement plutôt que les tables de production créées par une tâche planifiée. Utilisez la CLI pour les workflows de test ou de développement, et un job de déploiement pour les importations de production planifiées.
Pour en savoir plus, consultez Installer la CLI de la plate-forme dbt dans la documentation dbt.
Télécharger des artefacts à l'aide de l'API dbt Administrative
Vous pouvez utiliser l'API dbt Administrative pour récupérer de manière programmatique les artefacts de n'importe quelle exécution de job terminée. Le point de terminaison List Run Artifacts renvoie les chemins d'accès aux fichiers générés par une exécution, et le point de terminaison Retrieve Run Artifact télécharge un fichier d'artefact spécifique à partir de l'URL suivante :
https://ACCESS_URL/api/v2/accounts/ACCOUNT_ID/runs/RUN_ID/artifacts/FILE
ACCESS_URL dépend de la région qui héberge votre compte dbt Cloud.
Authentifiez les requêtes à l'aide d'un jeton de service dbt Cloud. Pour en savoir plus, consultez les pages suivantes de la documentation dbt :
Depuis votre terminal local, Cloud Shell ou votre environnement de workflow automatisé, téléchargez manifest.json, catalog.json, run_results.json et sources.json dans un répertoire local ou un bucket Cloud Storage, puis exécutez la commande gcloud décrite dans Configurer la connectivité dbt sur ce chemin d'accès.
Par défaut, le point de terminaison d'artefact renvoie les artefacts de la dernière étape de l'exécution, sauf si vous spécifiez le paramètre de requête step. Lorsque vous configurez le job comme décrit dans Configurer le job dbt Cloud, la dernière étape est dbt parse --write-catalog ou dbt docs generate --no-compile, qui n'écrit que catalog.json et laisse les trois autres artefacts intacts à l'étape par défaut.
Récupérer l'ID d'exécution
Pour télécharger les artefacts d'une exécution spécifique, vous avez besoin de son ID d'exécution. Vous pouvez copier l'ID d'exécution à partir de l'URL d'exécution dans la console dbt Google Cloud , ou interroger l'API à partir de votre terminal ou de votre script de workflow pour obtenir l'exécution réussie la plus récente d'un job :
GET https://ACCESS_URL/api/v2/accounts/ACCOUNT_ID/runs/?job_definition_id=JOB_ID&status=10&order_by=-finished_at&limit=1
Dans les paramètres de requête, status=10 filtre les exécutions terminées avec l'état Success. Vous pouvez interroger ce point de terminaison de manière planifiée pour identifier la dernière exécution réussie, télécharger ses artefacts et exécuter la commande d'importation gcloud.
Déclencher l'importation à l'aide d'un webhook
Au lieu d'interroger l'API, vous pouvez configurer un webhook dbt Cloud pour déclencher une importation automatique des métadonnées chaque fois qu'une exécution de job se termine. Le webhook envoie une charge utile à un point de terminaison HTTP que vous fournissez :
- Dans la console dbt Google Cloud , accédez à Account settings (Paramètres du compte) > Webhooks, puis cliquez sur Create webhook (Créer un webhook) ou Create new webhook (Créer un webhook). Configurez l'abonnement au webhook :
- Événements : sélectionnez Exécution terminée (
job.run.completed), qui ne se déclenche qu'une fois l'exécution terminée et ses artefacts disponibles au téléchargement. - Jobs : sélectionnez les jobs de déploiement dbt Cloud que vous souhaitez surveiller.
- Point de terminaison : saisissez l'URL HTTPS d'un service que vous exécutez (par exemple, un service Cloud Run ou une fonction Cloud Run).
- Événements : sélectionnez Exécution terminée (
- Enregistrez le jeton secret du webhook affiché par dbt Cloud. Votre service utilise ce secret pour vérifier l'en-tête
Authorization, qui contient une signature HMAC-SHA256 du corps de la requête. - Dans votre service, lisez
data.runIdà partir de la charge utile JSON, téléchargez les artefacts de l'exécution à l'aide de l'API Administrative comme décrit précédemment, puis exécutez la commandegcloud dataplex dbt metadata-jobs create.
Lorsque vous implémentez votre gestionnaire de webhook, tenez compte des points suivants :
- dbt Cloud attend une réponse pendant 10 secondes au maximum. Comme l'importation des métadonnées prend plusieurs minutes, renvoyez d'abord une réponse HTTP et exécutez l'importation en arrière-plan (par exemple, en tant que job Cloud Run ou avec l'option
--async). job.run.completedse déclenche également pour les exécutions ayant échoué. Ainsi, les exécutions avec des tests ayant échoué sont toujours importées. Ne vous abonnez pas àjob.run.errored, car il peut se déclencher avant que les artefacts de l'exécution ne soient disponibles.
Pour en savoir plus sur les charges utiles des webhooks et la validation des signatures, consultez Webhooks pour vos jobs dans la documentation dbt.
Configurer la connectivité dbt
Pour établir la connectivité dbt, vous devez d'abord exécuter les commandes dbt appropriées pour générer les artefacts de métadonnées. Une fois les fichiers JSON stockés et accessibles, le processus d'importation effectue les actions suivantes :
- Lire les artefacts d'entrée : lisez les artefacts JSON générés par dbt Core et MetricFlow à partir de l'emplacement d'entrée (répertoire local ou URI Cloud Storage spécifié dans
--artifacts-path). - Transformer les métadonnées : transformez le contenu au format d'importation des métadonnées Knowledge Catalog (
dbt_metadata.jsonl). - Importer en préproduction : importez le fichier d'importation de métadonnées transformé dans l'emplacement Cloud Storage de préproduction de sortie spécifié dans
--storage-uri. - Déclencher un job d'importation : déclenchez un job d'importation de métadonnées Knowledge Catalog qui indique à l'agent de service Knowledge Catalog de lire et d'ingérer les métadonnées préparées depuis
--storage-uridans les ressources Knowledge Catalog.
Console
Dans la console Google Cloud , accédez à la page Connecteurs de Knowledge Catalog.
Cliquez sur Ajouter une connexion.
Dans la liste Connecteurs, sélectionnez la fiche dbt Core et MetricFlow.
Pour afficher vos éléments dbt importés, accédez à la page Recherche ou à la page Groupes d'entrées de destination.
gcloud
Pour créer un job de métadonnées dbt, procédez comme suit :
- Assurez-vous que les fichiers d'artefacts de métadonnées dbt sont stockés localement ou dans un bucket Cloud Storage d'entrée.
- Assurez-vous de disposer d'un bucket Cloud Storage de préproduction de sortie configuré avec les autorisations appropriées pour l'appelant et l'agent de service Knowledge Catalog.
Depuis Cloud Shell, un terminal local ou un outil de workflow automatisé, exécutez la commande
gcloud:gcloud dataplex dbt metadata-jobs create my-dbt-import \ --project=my-project \ --location=us-central1 \ --artifacts-path=. \ --entry-group=dbt-metadata-ingestion \ --storage-uri=gs://my-bucket/dbt-imports/Options obligatoires
--storage-uri=STORAGE_URI: (Sortie/Staging) Préfixe d'URI Cloud Storage (gs://bucket/path/) vers lequel le fichier JSONL transformé est importé et à partir duquel le job d'importation lit les données lors de l'ingestion. L'appelant doit disposer d'un accès en écriture (roles/storage.objectCreatorouroles/storage.objectAdmin), et l'agent de service Knowledge Catalog doit disposer d'un accès en lecture (roles/storage.objectViewer).
Flags facultatifs
--artifacts-path=ARTIFACTS_PATH: (Entrée) Chemin d'accès aux artefacts dbt sources. Il peut s'agir d'un chemin d'accès au répertoire local (tel que.ou./target) ou d'un préfixe d'URI Cloud Storage (tel quegs://my-bucket/dbt-artifacts/). Peut pointer vers la racine du projet dbt (le sous-répertoiretarget/est détecté automatiquement) ou directement vers le répertoire contenantmanifest.json. La valeur par défaut est.. Si un URI Cloud Storage est fourni, l'appelant doit disposer d'un accès en lecture (roles/storage.objectViewerouroles/storage.objectAdmin) au bucket d'entrée.--async: renvoie immédiatement une réponse, sans attendre la fin de l'opération en cours.--entry-group=ENTRY_GROUP: ID court du groupe d'entrées qui reçoit les entrées dbt. Doit déjà exister dans le projet et l'emplacement (la valeur par défaut estdbt-metadata-ingestion).--aspects-only: ne met à jour que les métadonnées observées par cette exécution dbt et ne modifie pas le reste du groupe d'entrées. Aucune entrée n'est créée, supprimée ou réassociée, aucun lien d'entrée n'est émis, et un aspect dont l'artefact dbt était absent de cette exécution conserve la valeur qu'une exécution précédente lui a attribuée. Utilisez cette option pour l'ingestion de routine répétée. Consultez Réexécuter l'ingestion.--include-entry-links: émet des liens d'entrée pour les relations dbt. Cette option est activée par défaut. Pour la désactiver, utilisez--no-include-entry-links. La commande émet les types de liens d'entrée suivants :reference: une ressource dépend d'une autre, la décrit ou l'utilise. Cela couvre les dépendances dbt entre les nœuds, un test et la ressource qu'il teste, un modèle sémantique ou une métrique et la ressource sur laquelle il est basé, un nœud et les macros de projet qu'il appelle, et un nœud et la table BigQuery dans laquelle il est matérialisé.schema-join: colonnes joignables déclarées par un test dbtrelationships.
--skip-bigquery-link: ignorer les liensreference(nœud dbt → table BigQuery physique). Par défaut, un lienreferenceest émis pour chaque nœud dbt matérialisé (modèle, seed, instantané) dont l'ensemble de données BigQuery se trouve dans l'emplacement d'importation (--location). Les sources dbt ne reçoivent pas de lienreferencevers leur table BigQuery. Les liens d'entrée ne peuvent faire référence qu'aux entrées@bigqueryde cette même région. Les ensembles de données d'une autre région sont donc automatiquement ignorés. Pour déterminer la région de chaque ensemble de données, la commande appelle l'API BigQuery. L'appelant doit donc disposer de l'autorisationbigquery.datasets.getsur ces ensembles de données. Sans cette autorisation, la commande ne peut pas ignorer les ensembles de données situés dans d'autres régions, et les liens vers ces ensembles de données ne sont pas résolus. Lorsque les tables BigQuery ne sont pas cataloguées dans Knowledge Catalog, utilisez--skip-bigquery-link.--validate-only: créez et importez le fichier JSON, puis validez le job de métadonnées, mais n'effectuez pas l'ingestion.
Vérifiez que l'état Created (Créé) s'affiche.
REST
Pour importer des métadonnées dbt à l'aide de l'API REST :
- Générez les artefacts dbt et transformez-les en fichier d'importation JSON Knowledge Catalog (
dbt_metadata.jsonl). - Importez le fichier transformé dans votre bucket de préproduction Cloud Storage (
gs://BUCKET_NAME/PATH/). Appelez la méthode
projects.locations.metadataJobs.create:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/metadataJobs?metadataJobId=JOB_ID \ -d '{ "type": "IMPORT", "importSpec": { "sourceStorageUri": "gs://BUCKET_NAME/PATH/", "entrySyncMode": "FULL", "aspectSyncMode": "INCREMENTAL", "scope": { "entryGroups": [ "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP" ], "entryTypes": [ "projects/dataplex-connector-types/locations/global/entryTypes/dbt-project", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-model", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-source", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-seed", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-snapshot", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-group", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-exposure", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-metric", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-macro", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-semantic-model", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-saved-query", "projects/dataplex-connector-types/locations/global/entryTypes/dbt-test" ], "aspectTypes": [ "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-node", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-project", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-model", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-source", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-seed", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-snapshot", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-group", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-exposure", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-metric", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-macro", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-semantic-model", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-saved-query", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-data-quality", "projects/dataplex-connector-types/locations/global/aspectTypes/dbt-model-contracts" ] } } }'Remplacez les éléments suivants :
- PROJECT_ID : ID du projet Google Cloud dans lequel se trouve votre groupe d'entrées.
- LOCATION : région de votre groupe d'entrées (par exemple,
us-central1). - JOB_ID : identifiant unique du job de métadonnées.
- BUCKET_NAME/PATH : préfixe de l'URI Cloud Storage où
dbt_metadata.jsonla été importé. - ENTRY_GROUP : ID court du groupe d'entrées de destination.
Pour suivre l'état de votre job d'importation, utilisez la méthode
projects.locations.metadataJobs.get:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/metadataJobs/JOB_ID
Une fois le job créé, Knowledge Catalog planifie la première exécution en fonction de votre configuration. Vous pouvez également la démarrer manuellement.
Réexécuter l'ingestion
Après la première importation, la plupart des exécutions n'ont besoin que d'actualiser les métadonnées des ressources qui existent déjà. Utilisez --aspects-only pour ces exécutions. Il ne met à jour que ce que l'exécution dbt a observé et laisse tout le reste dans le groupe d'entrées, de sorte qu'il peut être exécuté de manière répétée, selon n'importe quelle planification et à partir de plusieurs jobs.
Exécutez une ingestion complète (omettez --aspects-only) lorsque l'ensemble d'entrées change :
- La première ingestion dans un groupe d'entrées.
- Une ressource dbt est ajoutée, renommée ou supprimée.
- Le nom à afficher, la description ou les libellés d'une entrée sont modifiés.
- La hiérarchie des entrées change.
- Les dépendances dbt changent, par exemple lorsqu'un appel
ref(),source(), de test ou de macro est ajouté ou supprimé. Les exécutions--aspects-onlyne créent ni ne mettent à jour les liens d'entrée. - Vous modifiez
--include-entry-linksou--skip-bigquery-link.
Une exécution complète réécrit les aspects requis de chaque entrée à partir des artefacts sur le disque. Exécutez-la donc à partir d'un ensemble d'artefacts aussi complet que possible que votre pipeline peut produire.
Exécutez --aspects-only pour les actualisations de routine :
- Après l'exécution de la commande dbt de votre pipeline :
dbt build,dbt test,dbt source freshnessou une recompilation limitée à--select. - Une colonne est ajoutée, supprimée, retypée ou redécrite.
- Le code SQL du modèle a été modifié et l'exécution a également écrit
catalog.json. - Nouveaux résultats de test ou fraîcheur de la source.
--aspects-only peut ajouter et actualiser des métadonnées, mais pas les supprimer.
Rechercher et afficher les métadonnées dbt
Console
Dans la console Google Cloud , accédez à la page Rechercher de Knowledge Catalog.
Dans le panneau Filtres, filtrez les éléments dbt :
- Dans la section Système, sélectionnez Contexte importé.
- Dans la sous-section Connecteurs gérés qui s'affiche, sélectionnez dbt.
Dans le champ de recherche, saisissez votre requête en utilisant la recherche par mot clé ou en langage naturel. Par exemple, pour afficher tous les éléments dbt à l'aide de la recherche par mot clé, saisissez
system=DBTousystem=DBT AND type=dbt-model.Dans les résultats de recherche, cliquez sur un asset dbt pour ouvrir sa page d'informations et afficher son schéma, sa traçabilité et ses aspects techniques.
gcloud
Pour rechercher des entrées dbt dans votre projet, utilisez la commande
gcloud dataplex entries search:gcloud dataplex entries search 'system=DBT' \ --project=PROJECT_IDPour filtrer par type d'entrée dbt spécifique (comme des modèles ou des sources) :
gcloud dataplex entries search 'system=DBT AND type=dbt-model' \ --project=PROJECT_IDPour afficher tous les détails et aspects d'une entrée dbt spécifique, utilisez la commande
gcloud dataplex entries lookup:gcloud dataplex entries lookup ENTRY_ID \ --project=PROJECT_ID \ --location=LOCATION \ --entry-group=ENTRY_GROUP \ --view=FULLRemplacez les éléments suivants :
- PROJECT_ID : ID de votre projet Google Cloud .
- LOCATION : emplacement du groupe d'entrées (par exemple,
us-central1). - ENTRY_GROUP : ID court de votre groupe d'entrées de destination (par exemple,
dbt-metadata-ingestion). - ENTRY_ID : ID court ou nom de ressource relatif de l'entrée dbt.
REST
Pour rechercher des entrées dbt, appelez la méthode
projects.locations:searchEntries:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/global:searchEntries \ -d '{ "query": "system=DBT" }'Pour filtrer par type de ressource dbt spécifique :
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/global:searchEntries \ -d '{ "query": "system=DBT AND type=dbt-model" }'Pour récupérer l'intégralité des métadonnées et des aspects d'une entrée spécifique, appelez la méthode
projects.locations.entryGroups.entries.get:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP/entries/ENTRY_ID?view=FULLPour récupérer le contexte LLM de ressources dbt spécifiques, utilisez l'API
projects.locations:lookupContext:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:lookupContext \ -d '{ "resources": [ "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP/entries/ENTRY_ID" ] }'Remplacez les éléments suivants :
- PROJECT_ID : ID de votre projet Google Cloud .
- LOCATION : emplacement du groupe d'entrées (par exemple,
us-central1). - ENTRY_GROUP : ID court de votre groupe d'entrées de destination (par exemple,
dbt-metadata-ingestion). - ENTRY_ID : ID court ou nom de ressource relatif de l'entrée dbt.
Pour lister les liens d'une entrée dbt, appelez la méthode projects.locations:lookupEntryLinks. Par exemple, pour récupérer la table BigQuery dans laquelle un modèle dbt est matérialisé :
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:lookupEntryLinks?entry=ENTRY_NAME&entryMode=SOURCE&entryLinkTypes=projects/dataplex-types/locations/global/entryLinkTypes/reference"
ENTRY_NAME est le nom de ressource complet de l'entrée dbt. Les résultats sont paginés, avec un maximum de 10 liens par page.
Pour en savoir plus sur la recherche de ressources, consultez Rechercher des ressources dans Knowledge Catalog. Pour en savoir plus sur les expressions de requête et les filtres, consultez Syntaxe de recherche pour Knowledge Catalog.
Étapes suivantes
- Découvrez comment gérer les jobs de connecteur.