Pular para o conteúdo principal

Capture e view linhagem de dados usando Unity Catalog

Este artigo descreve como capturar e visualizar a linhagem de dados usando o Catalog Explorer, as tabelas do sistema de linhagem de dados e o site REST API.

O senhor pode usar o Unity Catalog para capturar a linhagem de dados em tempo de execução nas consultas executadas no Databricks. A linhagem é compatível com todos os idiomas e é capturada até o nível da coluna. Os dados de linhagem incluem Notebook, Job e dashboards relacionados à consulta. A linhagem pode ser visualizada no Catalog Explorer quase em tempo real e recuperada de forma programática usando as tabelas do sistema de linhagem e a API REST da Databricks.

A linhagem é agregada em todos os espaços de trabalho anexados a um metastore Unity Catalog. Isso significa que a linhagem capturada em um workspace é visível em qualquer outro workspace que compartilhe esse metastore. Especificamente, as tabelas e outros objetos de dados registrados no metastore são visíveis para os usuários que têm pelo menos BROWSE permissões sobre esses objetos, em todos os espaços de trabalho anexados ao metastore. No entanto, as informações detalhadas sobre os objetos de nível workspace, como o Notebook e os painéis em outro espaço de trabalho, são mascaradas (consulte Limitações e permissões de linhagem).

Os dados de linhagem são retidos por um ano.

A imagem a seguir é um exemplo de gráfico de linhagem. A funcionalidade e os exemplos específicos da linhagem de dados são abordados mais adiante neste artigo.

Visão geral da linhagem.

Para obter informações sobre o acompanhamento da linhagem de um modelo do aprendizado de máquina, consulte Acompanhar a linhagem de dados de um modelo Unity Catalog em.

Requisitos

Os seguintes itens são necessários para capturar a linhagem de dados usando o Unity Catalog:

  • O site workspace deve ter oUnity Catalog ativado.

  • As tabelas devem ser registradas em um metastore do Unity Catalog.

  • As consultas devem usar as interfaces Spark DataFrame (por exemplo, funções Spark SQL que retornam um DataFrame) ou Databricks SQL. Para obter exemplos de consultas em Databricks SQL e PySpark, consulte Exemplos.

  • Para view a linhagem de uma tabela ou view, os usuários devem ter pelo menos o privilégio BROWSE no catálogo pai da tabela ou view. O catálogo principal também deve estar acessível no site workspace. Consulte Limitar o acesso do catálogo a um espaço de trabalho específico.

  • Para view informações de linhagem para Notebook, Job ou dashboards, os usuários devem ter permissões nesses objetos, conforme definido pelas configurações de controle de acesso em workspace. Consulte Permissões do Lineage.

  • Para view a linhagem de um pipelinehabilitado para o Unity Catalog, o senhor deve ter CAN_VIEW permissões no pipeline.

  • O acompanhamento da transmissão da linhagem entre as tabelas Delta requer Databricks Runtime 11.3 LTS ou acima.

  • O acompanhamento da linhagem da coluna para cargas de trabalho DLT requer Databricks Runtime 13.3 LTS ou acima.

  • Talvez seja necessário atualizar as regras do firewall de saída para permitir a conectividade com o endpoint do Amazon Kinesis no plano de controle do Databricks. Normalmente, isso se aplica se o seu Databricks workspace for implantado em seu próprio VPC ou se o senhor usar o AWS PrivateLink em seu ambiente de rede Databricks. Para obter o Kinesis endpoint de sua região workspace, consulte Kinesis addresses. Consulte também Configurar um gerenciador de clientes VPC e Habilitar conectividade privada usando AWS PrivateLink.

Exemplos

nota
  • Os exemplos a seguir usam o nome do catálogo lineage_data e o nome do esquema lineagedemo. Para usar um catálogo e um esquema diferentes, altere os nomes usados nos exemplos.

  • Para concluir esse exemplo, você deve ter os privilégios CREATE e USE SCHEMA em um esquema. Um administrador da metastore, proprietário do catálogo, proprietário do esquema ou usuário com o privilégio MANAGE no esquema pode conceder esses privilégios. Por exemplo, para dar a todos os usuários do grupo 'data_engineers' permissão para criar tabelas no esquema lineagedemo no catálogo lineage_data, um usuário com um dos privilégios ou funções acima pode executar as seguintes consultas:

    SQL
    CREATE SCHEMA lineage_data.lineagedemo;
    GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;

Capture e explore a linhagem

Para capturar dados de linhagem:

  1. Acesse o site Databricks páginas de aterrissagem, clique em Novo ícone New na barra lateral e selecione Notebook no menu.

  2. Digite um nome para o Notebook e selecione SQL no idioma padrão .

  3. Em clustering , selecione um clustering com acesso a Unity Catalog.

  4. Clique em Criar .

  5. Na primeira célula do Notebook, digite as seguintes consultas:

    SQL
    CREATE TABLE IF NOT EXISTS
    lineage_data.lineagedemo.menu (
    recipe_id INT,
    app string,
    main string,
    dessert string
    );

    INSERT INTO lineage_data.lineagedemo.menu
    (recipe_id, app, main, dessert)
    VALUES
    (1,"Ceviche", "Tacos", "Flan"),
    (2,"Tomato Soup", "Souffle", "Creme Brulee"),
    (3,"Chips","Grilled Cheese","Cheesecake");

    CREATE TABLE
    lineage_data.lineagedemo.dinner
    AS SELECT
    recipe_id, concat(app," + ", main," + ",dessert)
    AS
    full_menu
    FROM
    lineage_data.lineagedemo.menu
  6. Para executar as consultas, clique na célula e pressione shift+enter ou clique em Menu Executar e selecione Executar célula .

Para usar o Catalog Explorer para view a linhagem gerada por essas consultas:

  1. Na caixa Search (Pesquisar) na barra superior do site Databricks workspace, procure a tabela lineage_data.lineagedemo.dinner e selecione-a.

  2. Selecione a linhagem tab. O painel de linhagem aparece e exibe tabelas relacionadas (neste exemplo, é a tabela menu).

  3. Para view um gráfico interativo da linhagem de dados, clique em See Lineage gráfico . Em default, um nível é exibido no gráfico. Clique no Ícone Plus Sign ícone em um nó para revelar mais conexões, se estiverem disponíveis.

  4. Clique em uma seta que conecta os nós no gráfico de linhagem para abrir o painel de conexão de linhagem . O painel de conexão do Lineage mostra detalhes sobre a conexão, incluindo tabelas de origem e destino, Notebook e Job.

    Lineage gráfico.

  5. Para mostrar o Notebook associado à tabela dinner, selecione o Notebook no painel de conexão Lineage ou feche o gráfico de linhagem e clique em Notebook . Para abrir o Notebook em um novo tab, clique no nome do Notebook.

  6. Para view a linhagem em nível de coluna, clique em uma coluna no gráfico para mostrar links para colunas relacionadas. Por exemplo, clicar na coluna 'full_menu' mostra as colunas upstream das quais a coluna foi derivada:

    Linhagem completa da coluna do menu.

Para view lineage usando um idioma diferente, por exemplo, Python:

  1. Abra o Notebook que o senhor criou anteriormente, crie uma nova célula e digite o seguinte código Python:

    Python
    %python
    from pyspark.sql.functions import rand, round
    df = spark.range(3).withColumn("price", round(10*rand(seed=42),2)).withColumnRenamed("id","recipe_id")

    df.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.price")

    dinner = spark.read.table("lineage_data.lineagedemo.dinner")
    price = spark.read.table("lineage_data.lineagedemo.price")

    dinner_price = dinner.join(price, on="recipe_id")
    dinner_price.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.dinner_price")
  2. Execute a célula clicando na célula e pressionando shift+enter ou clicando em Menu Executar e selecionando executar Cell .

  3. Na caixa Search (Pesquisar) na barra superior do site Databricks workspace, procure a tabela lineage_data.lineagedemo.price e selecione-a.

  4. Acesse Lineage tab e clique em See Lineage gráfico . Clique nos ícones Ícone Plus Sign para explorar a linhagem de dados gerada pelas consultas.

    Gráfico de linhagem expandido.

  5. Clique em uma seta que conecta os nós no gráfico de linhagem para abrir o painel de conexão de linhagem . O painel de conexão do Lineage mostra detalhes sobre a conexão, incluindo tabelas de origem e destino, Notebook e Job.

Capture e view fluxo de trabalho lineage

A linhagem também é capturada para qualquer fluxo de trabalho que leia ou grave no Unity Catalog. Para view lineage para um Databricks fluxo de trabalho:

  1. Clique em Novo ícone New na barra lateral e selecione Notebook no menu.

  2. Digite um nome para o Notebook e selecione SQL no idioma padrão .

  3. Clique em Criar .

  4. Na primeira célula do Notebook, digite a seguinte consulta:

    SQL
    SELECT * FROM lineage_data.lineagedemo.menu
  5. Clique em programar na barra superior. Na caixa de diálogo programar, selecione Manual , selecione um clustering com acesso a Unity Catalog e clique em Create .

  6. Clique em Run now (Executar agora ).

  7. Na caixa Search (Pesquisar) na barra superior do site Databricks workspace, procure a tabela lineage_data.lineagedemo.menu e selecione-a.

  8. Em Lineage tab, clique em fluxo de trabalho e selecione Downstream tab. O nome do trabalho aparece em Job Name como um consumidor da tabela menu.

Capture e view a linhagem do painel

Para criar um dashboard e view sua linhagem de dados:

  1. Acesse o site Databricks páginas de aterrissagem e abra o Catalog Explorer clicando em Catalog na barra lateral.

  2. Clique no nome do catálogo, clique em lineagedemo e selecione a tabela menu. Você também pode usar a caixa Pesquisar na barra superior para pesquisar a tabela menu.

  3. Clique em Abrir em um painel .

  4. Selecione as colunas que você deseja adicionar ao painel e clique em Criar .

  5. Publique o painel.

    Somente os painéis publicados são rastreados na linhagem de dados.

  6. Na caixa Pesquisar na barra superior, pesquise a tabela lineage_data.lineagedemo.menu e selecione-a.

  7. No site da Lineage tab, clique em Dashboards . O painel aparece em Nome do painel como consumidor da tabela de menu.

Permissões de linhagem

O Lineage gráfico compartilha o mesmo modelo de permissão que o Unity Catalog. As tabelas e outros objetos de dados registrados no metastore do Unity Catalog são visíveis apenas para usuários que tenham pelo menos BROWSE permissões sobre esses objetos. Se um usuário não tiver o privilégio BROWSE ou SELECT em uma tabela, ele não poderá explorar sua linhagem. O Lineage gráfico exibe Unity Catalog objetos em todos os espaços de trabalho anexados ao metastore, desde que o usuário tenha as permissões de objeto adequadas.

Por exemplo, execute o seguinte comando para userA:

SQL
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;

Quando o site userA visualizar o gráfico de linhagem da tabela lineage_data.lineagedemo.menu, ele verá a tabela menu. Eles não poderão ver informações sobre tabelas associadas, como a tabela downstream lineage_data.lineagedemo.dinner. A tabela dinner é exibida como um nó masked na exibição para userA, e userA não pode expandir o gráfico para revelar tabelas downstream de tabelas às quais não tem permissão de acesso.

Se o senhor executar o comando a seguir para conceder a permissão BROWSE a userB, esse usuário poderá view o gráfico de linhagem de qualquer tabela no esquema lineage_data:

SQL
GRANT BROWSE on lineage_data to `userB@company.com`;

Da mesma forma, os usuários de linhagem devem ter permissões específicas para view workspace objetos como Notebook, Job e dashboards. Além disso, eles só podem ver informações detalhadas sobre os objetos do workspace quando estiverem conectados ao workspace no qual esses objetos foram criados. Informações detalhadas sobre objetos de nível workspaceem outro espaço de trabalho são mascaradas no gráfico de linhagem.

Para obter mais informações sobre como gerenciar o acesso a objetos protegidos em Unity Catalog, consulte gerenciar privilégios em Unity Catalog. Para obter mais informações sobre como gerenciar o acesso a objetos do site workspace, como Notebook, Job e dashboards, consulte Listas de controle de acesso.

Excluir dados de linhagem

atenção

As instruções a seguir excluem todos os objetos armazenados no Unity Catalog. Use essas instruções somente se necessário. Por exemplo, para atender aos requisitos do site compliance.

Para excluir os dados de linhagem, o senhor deve excluir o metastore que gerencia os objetos do Unity Catalog. Para obter mais informações sobre a exclusão do metastore, consulte Excluir um metastore. Os dados serão excluídos dentro de 90 dias.

Obter a linhagem da tabela usando o Databricks Assistant

Databricks Assistant fornece informações detalhadas sobre as linhagens e percepções das mesas.

Para obter informações sobre a linhagem usando o Assistant:

  1. Acesse o site Databricks páginas de aterrissagem e abra o Catalog Explorer clicando em Ícone de catálogo Catalog na barra lateral.
  2. Clique no nome do catálogo e, em seguida, clique no ícone Ícone do assistente de ajuda do produto - cor Assistente no canto superior direito.
  3. No prompt do Assistente, digite:
    • /getTableLineages para view dependências upstream e downstream.
    • /getTableInsights para acessar percepções orientadas por metadados, como atividade do usuário e padrões de consulta.

Essas consultas permitem que o Assistant responda perguntas como “mostre-me linhagens posteriores” ou “quem consulta essa tabela com mais frequência”.

Databricks Assistant fornece a linhagem e as percepções da tabela.

Consulta de linhagem uso de dados tabelas do sistema

Você pode usar as tabelas do sistema de linhagem para consultar dados de linhagem de forma programática. Para obter instruções detalhadas, consulte Monitorar a atividade do account com tabelas de sistema e Referência de tabelas de sistema do Lineage.

Se o seu site workspace estiver em uma região que não ofereça suporte a tabelas do sistema de linhagem, o senhor poderá usar a linhagem de dados REST API para recuperar dados de linhagem de forma programática.

Recupere a linhagem usando a API REST da linhagem de dados

A API de linhagem de dados permite que o senhor recupere a linhagem de tabelas e colunas. No entanto, se o seu workspace estiver em uma região que ofereça suporte às tabelas do sistema de linhagem, o senhor deverá usar as consultas da tabela do sistema em vez do REST API. As tabelas do sistema são a melhor opção para a recuperação programática de dados de linhagem. A maioria das regiões suporta as tabelas do sistema de linhagem.

important

Para acessar as APIs REST da Databricks, o senhor deve se autenticar.

Recuperar a linhagem da tabela

Este exemplo recupera dados de linhagem para a tabela dinner.

Solicitação

Bash
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/table-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "include_entity_lineage": true}'

Substitua <workspace-instance>.

Este exemplo usa um .netrc arquivo.

Resposta

JSON
{
"upstreams": [
{
"tableInfo": {
"name": "menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
],
"downstreams": [
{
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
},
{
"tableInfo": {
"name": "dinner_price",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
]
}

Recuperar a linhagem da coluna

Este exemplo recupera dados da coluna para a tabela dinner.

Solicitação

Bash
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/column-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "column_name": "dessert"}'

Substitua <workspace-instance>.

Este exemplo usa um .netrc arquivo.

Resposta

JSON
{
"upstream_cols": [
{
"name": "dessert",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "main",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "app",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
}
],
"downstream_cols": [
{
"name": "full_menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "dinner_price",
"table_type": "TABLE"
}
]
}

Limitações

  • Embora a linhagem seja agregada a todos os espaços de trabalho anexados ao mesmo metastore Unity Catalog, os detalhes dos objetos workspace, como o Notebook e os painéis, são visíveis apenas no workspace em que foram criados.

  • Como a linhagem é calculada em uma janela móvel de um ano, a linhagem coletada há mais de um ano não é exibida. Por exemplo, se um trabalho ou consulta ler dados da tabela A e gravar na tabela B, o link entre a tabela A e a tabela B será exibido somente por um ano. Você pode filtrar dados de linhagem por período de tempo dentro da janela de um ano.

  • Os trabalhos que usam a solicitação Jobs API runs submit não estão disponíveis ao visualizar a linhagem. A linhagem em nível de tabela e coluna ainda é capturada ao usar a solicitação runs submit, mas o link para a execução não é capturado.

  • O Unity Catalog captura a linhagem até o nível da coluna, tanto quanto possível. No entanto, há alguns casos em que a linhagem em nível de coluna não pode ser capturada.

  • A linhagem de coluna é suportada somente quando a origem e o destino são referenciados pelo nome da tabela (Exemplo: select * from <catalog>.<schema>.<table>). A linhagem da coluna não pode ser capturada se a origem ou o destino forem endereçados por caminho (Exemplo: select * from delta."s3://<bucket>/<path>").

  • Se uma tabela ou view for renomeado, a linhagem não será capturada para a tabela ou view renomeado.

  • Se um esquema ou catálogo for renomeado, a linhagem não será capturada para tabelas e visualizações no catálogo ou esquema renomeado.

  • Se o senhor usar Spark SQL dataset checkpointing, a linhagem não será capturada.

  • Unity Catalog captura a linhagem do pipeline de DLT na maioria dos casos. No entanto, em alguns casos, a cobertura completa da linhagem não pode ser garantida, como quando o pipeline usa as API tabelas APPLY CHANGES ou TEMPORARY.

  • O Lineage não captura as funções do Stack.

  • A visualização temporária global não é capturada na linhagem.

  • Tabelas abaixo de system.information_schema não são capturadas na linhagem.

  • A linhagem completa em nível de coluna não é capturada pelo site default para MERGE operações.

    O senhor pode ativar a captura de linhagem para as operações MERGE definindo a propriedade Spark spark.databricks.dataLineage.mergeIntoV2Enabled como true. A ativação desse sinalizador pode reduzir o desempenho da consulta, principalmente em cargas de trabalho que envolvem tabelas muito amplas.