Pular para o conteúdo principal

Referência de tabelas do sistema de linhagem

info

Visualização

Essa tabela do sistema está em Pré-visualização Pública. Para acessar a tabela, o esquema deve estar habilitado em seu catálogo system. Para obter mais informações, consulte Habilitar esquemas de tabelas do sistema.

Este artigo fornece uma visão geral das duas tabelas do sistema de linhagem. Essas tabelas do sistema se baseiam no recurso de linhagem de dados do Unity Catalog, permitindo que o senhor consulte programaticamente os dados de linhagem para alimentar a tomada de decisões e os relatórios.

nota

Ambas as tabelas de linhagem representam um subconjunto de todos os eventos de leitura/gravação, pois nem sempre é possível capturar a linhagem. Os registros só são emitidos quando a linhagem pode ser inferida.

Tabela tabela de linhagem

A tabela do sistema de linhagem de tabelas inclui um registro para cada evento de leitura ou gravação em uma tabela ou caminho do Unity Catalog. Isso inclui, mas não se limita à execução de trabalhos, execução de notebooks e painéis atualizados com o evento de leitura ou gravação.

Caminho da tabela : Essa tabela do sistema está localizada em system.access.table_lineage.

Esquema de linhagem de tabelas

A tabela do sistema de linhagem de tabelas usa o esquema a seguir.

Nome da coluna

Tipo de dados

Descrição

Exemplo

account_id

string

A ID da conta da Databricks.

7af234db-66d7-4db3-bbf0-956098224879

metastore_id

string

A ID do metastore do Unity Catalog.

5a31ba44-bbf4-4174-bf33-e1fa078e6765

workspace_id

string

A ID do workspace

123456789012345

entity_type

string

O tipo de entidade da qual a transação de linhagem foi capturada. O valor é NOTEBOOK, JOB, PIPELINE, DASHBOARD_V3 (Painel), DBSQL_DASHBOARD (Painel legado), DBSQL_QUERY ou NULL.

NOTEBOOK

entity_id

string

O ID da entidade da qual a transação de linhagem foi capturada. Se entity_type for NULL, entity_id será NULL.

  • Notebook: 23098402394234 - Job: 23098402394234 - Databricks SQL query: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Painel de controle: 01ef070d110715f2b6d3061b8bda89ea - Painel antigo: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - tubulação: e9cd8a31-de2f-4206-adfa-4f6605d68d88

entity_run_id

string

ID para descrever a execução exclusiva da entidade, ou NULL. Isso difere para cada tipo de entidade: - Notebook: comando - Job: Emprego - Databricks SQL query: query_run_id - Painel: query_run_id - Painel antigo: query_run_id - pipeline: pipeline Se entity_type for NULL, entity_run_id será NULL.

  • Notebook: e3cr5a10-de6f-6206-fdfa-4f5505d68d55 - Job: 51090402394234 - Databricks SQL query: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Painel de controle: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - Painel antigo: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - tubulação: c5am1e0r-on2f-4206-adfa-4f6605d68d88

source_table_full_name

string

Nome em três partes para identificar a tabela de origem.

catalog.schema.table

source_table_catalog

string

O catálogo da tabela de origem.

catalog

source_table_schema

string

O esquema da tabela de origem.

schema

source_table_name

string

O nome da tabela de origem.

table

source_path

string

Localização no armazenamento em nuvem da tabela de origem ou o caminho, se ela estiver lendo diretamente do armazenamento em nuvem.

gs://mybucket/table1

source_type

string

O tipo da fonte. O valor é TABLE, PATH, VIEW ou STREAMING_TABLE.

TABLE

target_table_full_name

string

Nome em três partes para identificar a tabela de destino.

catalog.schema.table

target_table_catalog

string

O catálogo da tabela de destino.

catalog

target_table_schema

string

O esquema da tabela de destino.

schema

target_table_name

string

O nome da tabela de destino.

table

target_path

string

Localização no armazenamento em nuvem da tabela de destino.

gs://mybucket/table1

target_type

string

O tipo do alvo. O valor é TABLE, PATH, VIEW ou STREAMING TABLE.

TABLE

created_by

string

O usuário que gerou essa linhagem. Pode ser um nome de usuário Databricks, um ID de entidade de serviço Databricks, "System-User" ou NULL se as informações do usuário não puderem ser capturadas.

crampton.rods@email.com

event_time

carimbo de data/hora

A data e hora em que a linhagem foi gerada. As informações de fuso horário são registradas no final do valor com +00:00 representando UTC.

2023-06-20T19:47:21.194+00:00

event_date

Data

A data em que a linhagem foi gerada. Essa é uma coluna particionada.

2023-06-20

Tabela de linhagem de colunas

A tabela de linhagem de colunas não inclui eventos que não tenham uma fonte. Por exemplo, se você inserir em uma coluna usando valores explícitos, ela não será capturada. Se você ler uma coluna, ela será capturada independentemente de você escrever ou não a saída. A linhagem de coluna não é suportada pelo DLT.

Caminho da tabela : Essa tabela do sistema está localizada em system.access.column_lineage.

Esquema de linhagem de colunas

A tabela do sistema de linhagem de colunas usa o seguinte esquema:

Nome da coluna

Tipo de dados

Descrição

Exemplo

account_id

string

A ID da conta da Databricks.

7af234db-66d7-4db3-bbf0-956098224879

metastore_id

string

A ID do metastore do Unity Catalog.

5a31ba44-bbf4-4174-bf33-e1fa078e6765

workspace_id

string

A ID do workspace

123456789012345

entity_type

string

O tipo de entidade da qual a transação de linhagem foi capturada. O valor é NOTEBOOK, JOB, PIPELINE, DASHBOARD_V3 (Painel), DBSQL_DASHBOARD (Painel legado), DBSQL_QUERY ou NULL.

NOTEBOOK

entity_id

string

O ID da entidade da qual a transação de linhagem foi capturada. Se entity_type for NULL, entity_id será NULL.

  • Notebook: 23098402394234 - Job: 23098402394234 - Databricks SQL query: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Painel de controle: 01ef070d110715f2b6d3061b8bda89ea - Painel antigo: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - tubulação: e9cd8a31-de2f-4206-adfa-4f6605d68d88

entity_run_id

string

ID para descrever a execução exclusiva da entidade, ou NULL. Isso difere para cada tipo de entidade: - Notebook: comando - Job: Emprego - Databricks SQL query: query_run_id - Painel: query_run_id - Painel antigo: query_run_id - pipeline: pipeline Se entity_type for NULL, entity_run_id será NULL.

  • Notebook: e3cr5a10-de6f-6206-fdfa-4f5505d68d55 - Job: 51090402394234 - Databricks SQL query: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Painel de controle: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - Painel antigo: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - tubulação: c5am1e0r-on2f-4206-adfa-4f6605d68d88

source_table_full_name

string

Nome em três partes para identificar a tabela de origem.

catalog.schema.table

source_table_catalog

string

O catálogo da tabela de origem.

catalog

source_table_schema

string

O esquema da tabela de origem.

schema

source_table_name

string

O nome da tabela de origem.

table

source_path

string

Localização no armazenamento em nuvem da tabela de origem ou o caminho, se ela estiver lendo diretamente do armazenamento em nuvem.

gs://mybucket/table1

source_type

string

O tipo da fonte. O valor é TABLE, PATH, VIEW ou STREAMING_TABLE.

TABLE

source_column_name

string

O nome da coluna de origem.

date

target_table_full_name

string

Nome em três partes para identificar a tabela de destino.

catalog.schema.table

target_table_catalog

string

O catálogo da tabela de destino.

catalog

target_table_schema

string

O esquema da tabela de destino.

schema

target_table_name

string

O nome da tabela de destino.

table

target_path

string

Localização no armazenamento em nuvem da tabela de destino.

gs://mybucket/table1

target_type

string

O tipo do alvo. O valor é TABLE, PATH, VIEW ou STREAMING TABLE.

TABLE

target_column_name

string

O nome da coluna de destino.

date

created_by

string

O usuário que gerou essa linhagem. Pode ser um nome de usuário Databricks, um ID de entidade de serviço Databricks, "System-User" ou NULL se as informações do usuário não puderem ser capturadas.

crampton.rods@email.com

event_time

carimbo de data/hora

A data e hora em que a linhagem foi gerada. As informações de fuso horário são registradas no final do valor com +00:00 representando UTC.

2023-06-20T19:47:21.194+00:00

event_date

Data

A data em que a linhagem foi gerada. Essa é uma coluna particionada.

2023-06-20

Lendo tabelas do sistema de linhagem

Observe as seguintes considerações ao analisar as tabelas do sistema de linhagem:

  • Para entity_type, o site Databricks é compatível com DLT, Notebook, Job, consultas Databricks SQL e dashboards. Eventos de outras entidades não são suportados.
  • Se o senhor vir o endereço entity_type como null, isso significa que nenhuma entidade da Databricks está envolvida no evento. Por exemplo, pode ser o resultado de uma consulta JDBC ou de um usuário que clica em Sample Data tab na UI Databricks.
  • Para determinar se o evento foi uma leitura ou uma gravação, o senhor pode view o tipo de origem e o tipo de destino.
    • Somente leitura: o tipo de origem não é nulo, mas o tipo de destino é nulo.
    • Somente gravação: o tipo de destino não é nulo, mas o tipo de origem é nulo.
    • Leitura e gravação: o tipo de origem e o tipo de destino não são nulos.

Exemplo de tabela de sistema de linhagem

Como exemplo de como a linhagem é registrada nas tabelas do sistema, aqui está um exemplo de consulta seguida pelos registros de linhagem que a consulta cria:

SQL
CREATE OR REPLACE TABLE car_features
AS SELECT *, in1+in2 as premium_feature_set
FROM car_features_exterior
JOIN car_features_interior
USING(id, model);

O registro em system.access.table_lineage ficaria assim:

entity_type

entity_id

source_table_name

target_table_name

created_by

event_time

NOTEBOOK

27080565267

car_features_exterior

car_features

crampton@email.com

2023-01-25T16:19:58.908+0000

NOTEBOOK

27080565267

car_features_interior

car_features

crampton@email.com

2023-01-25T16:19:58.908+0000

O registro em system.access.column_lineage ficaria assim:

entity_type

entity_id

source_table_name

target_table_name

source_column_name

target_column_name

event_time

NOTEBOOK

27080565267

car_features_interior

car_features

in1

premium_feature_set

2023-01-25T16:19:58.908+0000

NOTEBOOK

27080565267

car_features_interior

car_features

in2

premium_feature_set

2023-01-25T16:19:58.908+0000

nota

Nem todas as colunas de linhagem são mostradas no exemplo acima. Para obter o esquema completo, consulte o esquema de linhagem acima.

Solução de problemas de consultas de tabelas externas

Quando você faz referência a uma tabela externa usando seu caminho de armazenamento em nuvem, o registro de linhagem associado inclui apenas o nome do caminho e não o nome da tabela. Como exemplo, o registro de linhagem dessa consulta incluiria o nome do caminho e não o nome da tabela:

SQL
SELECT * FROM delta.`gcp://mybucket/table1`;

Se você estiver tentando consultar registros de linhagem para uma tabela externa referenciada por caminho, precisará filtrar a consulta usando source_path ou target_path em vez de source_table_full_name ou target_table_full_name. Por exemplo, a consulta a seguir extrai todos os registros de linhagem para uma tabela externa:

SQL
SELECT *
FROM system.access.table_lineage
WHERE
source_path = "gs://mybucket/table1" OR
target_path = "gs://mybucket/table1";

Exemplo: recuperar registros de linhagem com base no nome da tabela externa

Se não quiser recuperar manualmente o caminho do armazenamento em nuvem para encontrar a linhagem, o senhor pode usar a seguinte função para obter o nome da tabela de uso de dados da linhagem. Você também pode substituir system.access.table_lineage por system.access.column_lineage na função se quiser consultar a linhagem da coluna.

Python
def getLineageForTable(table_name):
table_path = spark.sql(f"describe detail {table_name}").select("location").head()[0]

df = spark.read.table("system.access.table_lineage")
return df.where(
(df.source_table_full_name == table_name)
| (df.target_table_full_name == table_name)
| (df.source_path == table_path)
| (df.target_path == table_path)
)

Em seguida, use o comando a seguir para chamar a função e exibir os registros de linhagem da tabela externa:

Python
display(getLineageForTable("table_name"))