Neste documento, descrevemos como importar metadados do dbt Core e do MetricFlow para o Knowledge Catalog (antigo Dataplex Universal Catalog) usando o comando gcloud.
Os seguintes metadados são capturados pela integração do dbt:
- Metadados técnicos: incluem recursos principais (fontes, sementes, modelos) e as propriedades técnicas deles (nomes de colunas, tipos de dados, contagens de linhas).
- Metadados semânticos e empresariais: com tecnologia do dbt MetricFlow, este inclui definições e lógica de negócios, como modelos semânticos, métricas e consultas salvas.
- Metadados operacionais e de qualidade de dados: incluem metadados de execução, como tempo, status de sucesso ou falha, atualização de dados, testes e resultados de testes.
- Metadados de linhagem e relacionamento: incluem gráficos de transformação (DAGs) e dependências entre recursos do dbt, linhagem física que rastreia e vincula blocos de transformação física, chaves de junção e junções dinâmicas e relações pai-filho.
- Metadados de consumo: incluem metadados capturados em exposições que mapeiam como os dados estão sendo usados fora do dbt.
Antes de importar metadados do dbt Core e do MetricFlow, conclua as seguintes tarefas:
- Conceda os papéis e permissões necessários.
- Ative a API Knowledge Catalog.
- Atenda aos pré-requisitos do dbt .
- Crie o grupo de entrada de destino se ele ainda não existir.
- Entenda os papéis do Cloud Storage.
Permissões e papéis do IAM
Para criar e gerenciar um job de conector do Knowledge Catalog, você precisa de papéis do Identity and Access Management (IAM) que concedam permissões para o Knowledge Catalog e o Cloud Storage.
Para receber as permissões necessárias para configurar um conector do dbt, peça ao administrador para conceder os seguintes papéis do IAM:
- Para criar e gerenciar grupos de entrada:
administrador do Dataplex Catalog
(
roles/dataplex.catalogAdmin), editor do Dataplex Catalog (roles/dataplex.catalogEditor), ou proprietário do grupo de entrada do Dataplex (roles/dataplex.entryGroupOwner) no projeto. Para executar o comando
gclouddo dbt e criar jobs de importação de metadados: para seguir o princípio de privilégio mínimo, conceda os seguintes papéis:- Proprietário do job de metadados do Dataplex
(
roles/dataplex.metadataJobOwner) no projeto. - Importador de grupo de entrada do Dataplex
(
roles/dataplex.entryGroupImporter) no grupo de entrada de destino ou no projeto.
Como alternativa, você pode conceder o administrador do Dataplex Catalog (
roles/dataplex.catalogAdmin) papel e o proprietário do job de metadados do Dataplex (roles/dataplex.metadataJobOwner) papel no projeto.- Proprietário do job de metadados do Dataplex
(
Para fazer upload de metadados transformados para o bucket de preparo de saída (
--storage-uri): Criador de objetos do Storage (roles/storage.objectCreator) ou Administrador de objetos do Storage (roles/storage.objectAdmin) no bucket de preparo.Para ler artefatos do dbt de um bucket do Cloud Storage de entrada (
--artifacts-path, se estiver usando o Cloud Storage): Leitor de objetos do Storage (roles/storage.objectViewer) ou Administrador de objetos do Storage (roles/storage.objectAdmin) no bucket de artefatos de entrada. Se você tiver o papel de administrador de objetos do Storage, o papel de leitor de objetos do Storage não será necessário.Para visualizar metadados do dbt: leitor do Dataplex Catalog (
roles/dataplex.catalogViewer) no projeto.Para visualizar registros no Cloud Logging: leitor de registros (
roles/logging.viewer) no projeto.
Além disso, conceda ao agente de serviço do Knowledge Catalog
(service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com) o
papel de leitor de objetos do Storage
(roles/storage.objectViewer) no bucket de preparo de saída do Cloud Storage
(--storage-uri) para que o job de importação possa ler o arquivo de metadados preparado.
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Ativar APIs
Ative a API Knowledge Catalog.
Pré-requisitos do dbt
Para importar o conjunto completo de metadados do dbt, recomendamos produzir todos os quatro arquivos de artefato JSON do dbt. Apenas manifest.json é obrigatório. Os outros enriquecem a importação e a transformação é degradada normalmente sem eles:
manifest.json(obrigatório): estrutura principal do projeto e gráfico de execução. Também contém os modelos semânticos, métricas e consultas salvas do MetricFlow.catalog.json: nomes de colunas e tipos de dados. Semcatalog.json, o aspecto do esquema é importado com colunas não tipadas.run_results.json: resultados de testes e metadados de execução.sources.json: atualização da origem.
Para gerar o conjunto completo de arquivos JSON de artefato de metadados do dbt, execute os seguintes comandos do dbt nesta ordem:
dbt source freshnessdbt builddbt docs generate --no-compile
Entender os papéis do Cloud Storage
A importação de metadados do dbt envolve dois locais distintos do Cloud Storage que atendem a finalidades diferentes e não devem ser confundidos:
- Entrada (artefatos de origem do dbt): onde os arquivos JSON do dbt gerados
residem. Esse pode ser um caminho de diretório local na máquina ou no executor de CI
(como
./target/ou.) ou um prefixo de URI de bucket de entrada do Cloud Storage (comogs://my-dbt-artifacts-bucket/target/). Você fornece esse caminho usando a flag--artifacts-path. O comandogcloudlê esses arquivos de entrada durante a preparação do job. O autor da chamada que executa o comandogcloudprecisa de acesso de leitura (roles/storage.objectViewerouroles/storage.objectAdmin) se estiver usando o Cloud Storage. O agente de serviço do Knowledge Catalog não precisa de acesso ao bucket de artefatos de entrada. - Saída (bucket de preparo de importação do Knowledge Catalog): um prefixo de URI de bucket do Cloud Storage (como
gs://my-staging-bucket/dbt-imports/) em que o comandogcloudfaz upload do arquivo de importação de metadados transformados (dbt_metadata.jsonl), e do qual o job de importação do Knowledge Catalog lê durante a ingestão. Você fornece esse URI usando a flag--storage-uri. O autor da chamada que executa o comandogcloudprecisa de acesso de gravação (roles/storage.objectCreatorouroles/storage.objectAdmin) para fazer upload do arquivo, e o agente de serviço do Knowledge Catalog precisa de acesso de leitura (roles/storage.objectViewer) para importá-lo.
Configurar a conectividade do dbt
Para estabelecer a conectividade do dbt, primeiro execute os comandos apropriados do dbt para gerar os artefatos de metadados. Depois que os arquivos JSON forem armazenados e acessíveis, você poderá usar o comando gcloud alpha dataplex dbt metadata-jobs create para:
- Ler artefatos de entrada: leia os artefatos JSON gerados pelo dbt Core e pelo
MetricFlow do local de entrada (diretório local ou URI do Cloud Storage
especificado em
--artifacts-path). - Transformar metadados: transforme o conteúdo no formato de importação de metadados do Knowledge Catalog (
dbt_metadata.jsonl). - Fazer upload para o preparo: faça upload do arquivo de importação de metadados transformados para o
local de preparo de saída do Cloud Storage especificado em
--storage-uri. - Acionar o job de importação: acione um job de importação de metadados do Knowledge Catalog que
instrui o agente de serviço do Knowledge Catalog a ler e ingerir os metadados preparados de
--storage-urinos recursos do Knowledge Catalog.
Para criar um job de metadados do dbt, siga estas etapas:
- Verifique se os arquivos de artefato de metadados do dbt estão armazenados localmente ou em um bucket de entrada do Cloud Storage.
- Verifique se você tem um bucket do Cloud Storage de preparo de saída configurado com as permissões adequadas para o autor da chamada e o agente de serviço do Knowledge Catalog.
No Cloud Shell, em um terminal local ou em uma ferramenta de fluxo de trabalho automatizada, execute o 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/Flags obrigatórias
--storage-uri=STORAGE_URI: (saída/preparo) prefixo de URI do Cloud Storage (gs://bucket/path/) em que o JSONL transformado é enviado e de onde o job de importação lê durante a ingestão. O autor da chamada precisa ter acesso de gravação (roles/storage.objectCreatorouroles/storage.objectAdmin), e o agente de serviço do Knowledge Catalog precisa ter acesso de leitura (roles/storage.objectViewer).
Flags opcionais
--artifacts-path=ARTIFACTS_PATH: (entrada) caminho para os artefatos de origem do dbt. Esse pode ser um caminho de diretório local (como.ou./target) ou um prefixo de URI do Cloud Storage (comogs://my-bucket/dbt-artifacts/). Pode apontar para a raiz do projeto do dbt (o subdiretóriotarget/é detectado automaticamente) ou diretamente para o diretório que contémmanifest.json. O padrão é.. Se um URI do Cloud Storage for fornecido, o autor da chamada precisará ter acesso de leitura (roles/storage.objectViewerouroles/storage.objectAdmin) ao bucket de entrada.--async: retorna imediatamente, sem esperar que a operação em andamento seja concluída.--entry-group=ENTRY_GROUP: ID abreviado do grupo de entrada que recebe as entradas do dbt. Já precisa existir no projeto e no local (o padrão édbt-metadata-ingestion).--aspects-only: atualiza apenas os metadados observados por essa execução do dbt e deixa o restante do grupo de entrada intacto. Nenhuma entrada é criada, excluída ou reparentada, e um aspecto cujo artefato do dbt estava ausente dessa execução mantém o valor que uma execução anterior forneceu. Use isso para ingestão rotineira e repetida. Consulte Executar a ingestão novamente.--validate-only: cria e faz upload do JSON e valida o job de metadados, mas não ingere.
Confirme se você recebeu um status Criado.
Depois de criar o job, o Knowledge Catalog agenda a primeira execução de acordo com a configuração ou você pode iniciá-la manualmente.
Executar a ingestão novamente
Após a primeira importação, a maioria das execuções só precisa atualizar os metadados dos recursos que já existem. Use --aspects-only para essas execuções. Ele atualiza apenas o que a execução do dbt observou e deixa todo o resto no grupo de entrada sozinho. Portanto, é seguro executar repetidamente, em qualquer programação e em mais de um job.
Execute uma ingestão completa (omita --aspects-only) quando o conjunto de entradas mudar:
- A primeira ingestão em um grupo de entrada.
- Um recurso do dbt é adicionado, renomeado ou excluído.
- O nome de exibição, a descrição ou os rótulos de uma entrada mudam.
- A hierarquia de entrada muda.
Uma execução completa reescreve os aspectos necessários de cada entrada dos artefatos no disco. Portanto, execute-o de um conjunto de artefatos o mais completo possível que seu pipeline possa produzir.
Execute --aspects-only para atualizações de rotina:
- Depois de qualquer comando do dbt que seu pipeline executar:
dbt build,dbt test,dbt source freshnessou uma recriação restrita por--select. - Uma coluna é adicionada, removida, redigitada ou redescrita.
- O SQL do modelo foi alterado e a execução também gravou
catalog.json. - Novos resultados de testes ou atualização de origem.
--aspects-only pode adicionar e atualizar metadados, mas não pode removê-los.
Pesquisar e visualizar metadados do dbt
No Google Cloud console, acesse a página Pesquisa do Knowledge Catalog.
No painel Filtros, é possível filtrar recursos do dbt usando as seções Projeto, Sistema e Pseudônimos de tipo. Na seção Sistema, selecione Contexto importado. A seleção desse filtro abre uma subseção Conectores gerenciados. Selecione dbt para filtrar todos os metadados do dbt.
É possível usar o campo de pesquisa para realizar consultas de pesquisa. Você pode realizar uma pesquisa por palavras-chave ou linguagem natural. Por exemplo, para visualizar todos os recursos do dbt por pesquisa de palavras-chave, insira
system=DBT.Para saber mais sobre como pesquisar recursos, consulte Pesquisar recursos no Knowledge Catalog. Para saber mais sobre as expressões que podem ser usadas no campo de pesquisa, consulte Sintaxe de pesquisa do Knowledge Catalog.
Também é possível usar a LookupContext API para recuperar o contexto do LLM para recursos específicos do dbt.
Limitações
- Oferece suporte a versões recentes do dbt Core v1 (validadas nas versões 1.11 e 1.12). O dbt Core v2 e o dbt Fusion não são compatíveis.
- Os modelos do dbt que usam o controle de versões do modelo são indisponíveis.
- O dbt Cloud não é compatível.
- Esquemas muito grandes ou profundamente aninhados são truncados: um único aspecto não pode exceder o limite de tamanho por aspecto. Portanto, esquemas profundamente aninhados podem perder campos finais.
--aspects-onlypode adicionar e atualizar metadados, mas não pode removê-los. A exclusão de um recurso do dbt exige uma execução completa.- Os links de entrada não são compatíveis.
- Essa integração oferece suporte apenas a eventos de linhagem do dbt em recursos do BigQuery
na API Data Lineage e no gráfico.
As entradas do dbt (origem, sementes, modelos) para fontes externas de terceiros não são capturadas
na linhagem de dados.
- Para ingerir todos os eventos de linhagem do dbt na API Data Lineage, use a integração do OpenLineage dbt. Em seguida, integre o OpenLineage ao Knowledge Catalog para importar e visualizar a linhagem de dados do dbt.
A seguir
- Saiba como gerenciar jobs de conector.