En este documento, se describe cómo importar metadatos de dbt Core y MetricFlow a Knowledge Catalog (antes Dataplex Universal Catalog) con el comando gcloud.
La integración de dbt captura los siguientes metadatos:
- Metadatos técnicos: Incluyen recursos clave (fuentes, semillas, modelos) y sus propiedades técnicas (nombres de columnas, tipos de datos, recuentos de filas).
- Metadatos empresariales y semánticos: Con tecnología de dbt MetricFlow, esto incluye definiciones y lógica empresariales, como modelos semánticos, métricas y consultas guardadas.
- Metadatos operacionales y de calidad de los datos: Incluyen metadatos de ejecución, como el tiempo, el estado de éxito o falla, la actualidad de los datos, las pruebas y los resultados de las pruebas.
- Metadatos de linaje y relación: Incluyen gráficos de transformación (DAGs) y dependencias entre recursos de dbt, linaje físico que rastrea y vincula bloques de transformación física, claves de unión y uniones dinámicas, y relaciones superior-secundario.
- Metadatos de consumo: Incluyen metadatos capturados en exposiciones que asignan cómo se usan los datos fuera de dbt.
Antes de importar metadatos de dbt Core y MetricFlow, completa las siguientes tareas:
- Otorga los roles y permisos necesarios.
- Habilita la API de Knowledge Catalog.
- Cumple con los requisitos previos de dbt .
- Crea el grupo de entradas de destino si aún no existe.
- Comprende los roles de Cloud Storage.
Permisos y funciones de IAM
Para crear y administrar un trabajo de conector de Knowledge Catalog, necesitas roles de Identity and Access Management (IAM) que otorguen permisos para Knowledge Catalog y Cloud Storage.
Para obtener los permisos que necesitas para configurar un conector de dbt, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Para crear y administrar grupos de entradas:
Administrador de catálogo de Dataplex
(
roles/dataplex.catalogAdmin), Editor de catálogo de Dataplex (roles/dataplex.catalogEditor) o Propietario de grupo de entradas de Dataplex (roles/dataplex.entryGroupOwner) en el proyecto. Para ejecutar el comando
gcloudde dbt y crear trabajos de importación de metadatos: Para seguir el principio de privilegio mínimo, otorga los siguientes roles:- Propietario de trabajos de metadatos de Dataplex
(
roles/dataplex.metadataJobOwner) en el proyecto. - Importador de grupo de entradas de Dataplex
(
roles/dataplex.entryGroupImporter) en el grupo de entradas de destino o el proyecto.
Como alternativa, puedes otorgar el rol de Administrador de catálogo de Dataplex (
roles/dataplex.catalogAdmin) y el rol de Propietario de trabajos de metadatos de Dataplex (roles/dataplex.metadataJobOwner) en el proyecto.- Propietario de trabajos de metadatos de Dataplex
(
Para subir metadatos transformados al bucket de preparación de salida (
--storage-uri): Creador de objetos de almacenamiento (roles/storage.objectCreator) o Administrador de objetos de almacenamiento (roles/storage.objectAdmin) en el bucket de preparación.Para leer artefactos de dbt desde un bucket de Cloud Storage de entrada (
--artifacts-path, si usas Cloud Storage): Visualizador de objetos de almacenamiento (roles/storage.objectViewer) o Administrador de objetos de almacenamiento (roles/storage.objectAdmin) en el bucket de artefactos de entrada. Si tienes el rol de Administrador de objetos de almacenamiento, no se requiere el rol de Visualizador de objetos de almacenamiento.Para ver los metadatos de dbt: Visualizador del catálogo de Dataplex (
roles/dataplex.catalogViewer) en el proyecto.Para ver registros en Cloud Logging: Visualizador de registros (
roles/logging.viewer) en el proyecto.
Además, debes otorgar al agente de servicio de Knowledge Catalog
(service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com) el
rol de Visualizador de objetos de almacenamiento
(roles/storage.objectViewer) en el bucket de Cloud Storage de preparación de salida
(--storage-uri) para que el trabajo de importación pueda leer el archivo de metadatos preparado.
Si quieres obtener más información para otorgar roles, consulta Administra el acceso.
Habilita las APIs
Habilita la API de Knowledge Catalog.
Requisitos previos de dbt
Para importar el conjunto completo de metadatos de dbt, te recomendamos que produzcas los cuatro archivos de artefactos JSON de dbt. Solo se requiere manifest.json. Los demás enriquecen la importación y la transformación se degrada correctamente sin ellos:
manifest.json(obligatorio): Estructura del proyecto principal y gráfico de ejecución. También incluye los modelos semánticos, las métricas y las consultas guardadas de MetricFlow.catalog.json: Nombres de columnas y tipos de datos. Sincatalog.json, el aspecto del esquema se importa con columnas sin tipo.run_results.json: Resultados de las pruebas y metadatos de ejecución.sources.json: Actualidad de la fuente.
Para generar el conjunto completo de archivos JSON de artefactos de metadatos de dbt, puedes ejecutar los siguientes comandos de dbt en este orden:
dbt source freshnessdbt builddbt docs generate --no-compile
Comprende los roles de Cloud Storage
La importación de metadatos de dbt implica dos ubicaciones distintas de Cloud Storage que tienen diferentes propósitos y no deben confundirse:
- Entrada (artefactos de origen de dbt): Es donde residen los archivos JSON de dbt generados. Puede ser una ruta de acceso a un directorio local en tu máquina o ejecutor de CI
(como
./target/o.) o un prefijo de URI de bucket de Cloud Storage de entrada (comogs://my-dbt-artifacts-bucket/target/). Proporcionas esta ruta con la marca--artifacts-path. El comandogcloudlee estos archivos de entrada durante la preparación del trabajo. La persona que llama que ejecuta el comandogcloudnecesita acceso de lectura (roles/storage.objectVieweroroles/storage.objectAdmin) si usa Cloud Storage. El agente de servicio de Knowledge Catalog no necesita acceso al bucket de artefactos de entrada. - Resultado (bucket de preparación de importación de Knowledge Catalog): Es un prefijo de URI de bucket de Cloud Storage (como
gs://my-staging-bucket/dbt-imports/) en el que el comandogcloudsube el archivo de importación de metadatos transformados (dbt_metadata.jsonl), y desde el que el trabajo de importación de Knowledge Catalog lee durante la transferencia. Proporcionas este URI con la marca--storage-uri. La persona que llama que ejecuta el comandogcloudnecesita acceso de escritura (roles/storage.objectCreatororoles/storage.objectAdmin) para subir el archivo, y el agente de servicio de Knowledge Catalog necesita acceso de lectura (roles/storage.objectViewer) para importarlo.
Configura la conectividad de dbt
Para establecer la conectividad de dbt, primero debes ejecutar los comandos de dbt adecuados para generar los artefactos de metadatos. Una vez que los archivos JSON se almacenan y son accesibles, puedes usar el comando gcloud alpha dataplex dbt metadata-jobs create para hacer lo siguiente:
- Leer artefactos de entrada: Lee los artefactos JSON generados por dbt Core y
MetricFlow desde la ubicación de entrada (directorio local o URI de Cloud Storage
especificado en
--artifacts-path). - Transformar metadatos: Transforma el contenido al formato de importación de metadatos de Knowledge Catalog (
dbt_metadata.jsonl). - Subir a la preparación: Sube el archivo de importación de metadatos transformados a la
ubicación de Cloud Storage de preparación de salida especificada en
--storage-uri. - Activar el trabajo de importación: Activa un trabajo de importación de metadatos de Knowledge Catalog que le
indica al agente de servicio de Knowledge Catalog que lea y transfiera los metadatos preparados
de
--storage-uria los recursos de Knowledge Catalog.
Para crear un trabajo de metadatos de dbt, completa los siguientes pasos:
- Asegúrate de que los archivos de artefactos de metadatos de dbt se almacenen de forma local o en un bucket de Cloud Storage de entrada.
- Asegúrate de tener un bucket de Cloud Storage de preparación de salida configurado con los permisos adecuados para la persona que llama y el agente de servicio de Knowledge Catalog.
Desde Cloud Shell, una terminal local o una herramienta de flujo de trabajo automatizada, ejecuta el comando
gcloud:gcloud alpha 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/Marcas necesarias
--storage-uri=STORAGE_URI: (Resultado/Preparación) Prefijo de URI de Cloud Storage (gs://bucket/path/) en el que se sube el JSONL transformado y desde el que el trabajo de importación lee durante la transferencia. La persona que llama debe tener acceso de escritura (roles/storage.objectCreatororoles/storage.objectAdmin), y el agente de servicio de Knowledge Catalog debe tener acceso de lectura (roles/storage.objectViewer).
Marcas opcionales
--artifacts-path=ARTIFACTS_PATH: (Entrada) Ruta de acceso a los artefactos de dbt de origen. Puede ser una ruta de acceso a un directorio local (como.o./target) o un prefijo de URI de Cloud Storage (comogs://my-bucket/dbt-artifacts/). Puede apuntar a la raíz del proyecto de dbt (el subdirectoriotarget/se detecta automáticamente) o directamente a el directorio que contienemanifest.json. El valor predeterminado es.. Si se proporciona un URI de Cloud Storage, la persona que llama debe tener acceso de lectura (roles/storage.objectVieweroroles/storage.objectAdmin) al bucket de entrada.--async: Muestra el resultado de inmediato, sin esperar a que se complete la operación en curso.--entry-group=ENTRY_GROUP: ID corto del grupo de entradas que recibe las entradas de dbt. Ya debe existir en el proyecto y la ubicación (el valor predeterminado esdbt-metadata-ingestion).--aspects-only: Actualiza solo los metadatos que observó esta ejecución de dbt y deja el resto del grupo de entradas sin cambios. No se crea, borra ni vuelve a vincular ninguna entrada, y un aspecto cuyo artefacto de dbt no estuvo presente en esta ejecución conserva el valor que le dio una ejecución anterior. Usa esto para la transferencia de rutina y repetida. Consulta Volver a ejecutar la transferencia.--validate-only: Compila y sube el JSON, y valida el trabajo de metadatos, pero no lo transfieras.
Confirma que recibiste un estado Created.
Después de crear el trabajo, Knowledge Catalog programa la primera ejecución según tu configuración, o puedes iniciarla de forma manual.
Volver a ejecutar la transferencia
Después de la primera importación, la mayoría de las ejecuciones solo necesitan actualizar los metadatos de los recursos que ya existen. Usa --aspects-only para esas ejecuciones. Actualiza solo lo que observó la ejecución de dbt y deja todo lo demás en el grupo de entradas, por lo que es seguro ejecutarlo de forma repetida, en cualquier programación y desde más de un trabajo.
Ejecuta una transferencia completa (omite --aspects-only) cuando cambia el conjunto de entradas:
- La primera transferencia a un grupo de entradas.
- Se agrega, cambia el nombre o se borra un recurso de dbt.
- Cambia el nombre visible, la descripción o las etiquetas de una entrada.
- Cambia la jerarquía de entradas.
Una ejecución completa vuelve a escribir los aspectos necesarios de cada entrada desde los artefactos en el disco, por lo que debes ejecutarla desde un conjunto de artefactos lo más completo posible que pueda producir tu canalización.
Ejecuta --aspects-only para las actualizaciones de rutina:
- Después de cualquier comando de dbt que ejecute tu canalización:
dbt build,dbt test,dbt source freshnesso una recompilación reducida con--select. - Se agrega, quita, vuelve a escribir o se vuelve a describir una columna.
- Se cambió el SQL del modelo y la ejecución también escribió
catalog.json. - Nuevos resultados de pruebas o actualidad de la fuente.
--aspects-only puede agregar y actualizar metadatos, pero no puede quitarlos.
Busca y visualiza metadatos de dbt
En la Google Cloud consola de, ve a la página Búsqueda de Knowledge Catalog.
En el panel Filtros, puedes filtrar los recursos de dbt con las secciones Proyecto, Sistema y Alias de tipo. En la sección Sistema, selecciona Contexto importado. Si seleccionas este filtro, se abrirá una subsección Conectores administrados. Selecciona dbt para filtrar todos los metadatos de dbt.
Puedes usar el campo de búsqueda para realizar consultas de búsqueda. Puedes realizar una búsqueda de palabras clave o de lenguaje natural. Por ejemplo, para ver todos los recursos de dbt a través de la búsqueda de palabras clave, ingresa
system=DBT.Para obtener más información sobre la búsqueda de recursos, consulta Busca recursos en Knowledge Catalog. Para obtener más información sobre las expresiones que puedes usar en el campo de búsqueda, consulta Busca sintaxis para Knowledge Catalog.
También puedes usar la LookupContext para recuperar el contexto de LLM para recursos de dbt específicos.
Limitaciones
- Admite versiones recientes de dbt Core v1 (validadas en las versiones 1.11 y 1.12). No se admiten dbt Core v2 ni dbt Fusion.
- No se admiten los modelos de dbt que usan el control de versiones del modelo.
- No se admite dbt Cloud.
- Los esquemas muy grandes o anidados de forma profunda se truncan: un solo aspecto no puede exceder el límite de tamaño por aspecto, por lo que los esquemas anidados de forma profunda pueden perder campos finales.
--aspects-onlypuede agregar y actualizar metadatos, pero no puede quitarlos. Para borrar un recurso de dbt, se requiere una ejecución completa.- No se admiten los vínculos de entrada.
- Esta integración solo admite eventos de linaje de dbt en recursos de BigQuery
en la API y el gráfico de Data Lineage. Las entradas de dbt (fuente, semillas, modelos) para fuentes externas de terceros no se capturan
en el linaje de datos.
- Para transferir todos los eventos de linaje de dbt en la API de Data Lineage, usa la integración de OpenLineage dbt. Luego, integra OpenLineage con Knowledge Catalog para importar y visualizar data lineage de dbt.
¿Qué sigue?
- Obtén más información para administrar trabajos de conectores.