Referência de tabelas do sistema de linhagem
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.
Esta página inclui uma referência para as 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.
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 a, 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 |
---|---|---|---|
| string | A ID da conta da Databricks. |
|
| string | A ID do metastore do Unity Catalog. |
|
| string | Nome em três partes para identificar a tabela de origem. |
|
| string | O catálogo da tabela de origem. |
|
| string | O esquema da tabela de origem. |
|
| string | O nome da tabela de origem. |
|
| string | Localização no armazenamento em nuvem da tabela de origem ou o caminho, se ela estiver lendo diretamente do armazenamento em nuvem. |
|
| string | O tipo da fonte. O valor é |
|
| string | Nome em três partes para identificar a tabela de destino. |
|
| string | O catálogo da tabela de destino. |
|
| string | O esquema da tabela de destino. |
|
| string | O nome da tabela de destino. |
|
| string | Localização no armazenamento em nuvem da tabela de destino. |
|
| string | O tipo do alvo. O valor é |
|
| 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 |
|
| 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 |
|
| Data | A data em que a linhagem foi gerada. Essa é uma coluna particionada. |
|
| string | O ID exclusivo do registro de linhagem. Esse valor é gerado automaticamente e não pode ser associado a nenhuma tabela. |
|
| string | O ID exclusivo de um evento de linhagem única. Várias linhas podem compartilhar o mesmo |
|
| string | O ID exclusivo de uma instrução de consulta que gerou o evento de linhagem. Esse é um key externo para join com a tabela do sistema de história de consulta. Esse valor só é definido quando a consulta é executada a partir de um SQL warehouse. |
|
| struct | Metadados sobre a entidade responsável pelo evento de linhagem. | Veja os metadados da entidade |
As colunas entity_type
, entity_run_id
e entity_id
foram descontinuadas. Para obter uma visão completa das entidades envolvidas no registro de linhagem, use a coluna entity_metadata
.
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 |
---|---|---|---|
| string | A ID da conta da Databricks. |
|
| string | A ID do metastore do Unity Catalog. |
|
| string | A ID do workspace |
|
| string | Nome em três partes para identificar a tabela de origem. |
|
| string | O catálogo da tabela de origem. |
|
| string | O esquema da tabela de origem. |
|
| string | O nome da tabela de origem. |
|
| string | Localização no armazenamento em nuvem da tabela de origem ou o caminho, se ela estiver lendo diretamente do armazenamento em nuvem. |
|
| string | O tipo da fonte. O valor é |
|
| string | O nome da coluna de origem. |
|
| string | Nome em três partes para identificar a tabela de destino. |
|
| string | O catálogo da tabela de destino. |
|
| string | O esquema da tabela de destino. |
|
| string | O nome da tabela de destino. |
|
| string | Localização no armazenamento em nuvem da tabela de destino. |
|
| string | O tipo do alvo. O valor é |
|
| string | O nome da coluna de destino. |
|
| 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 |
|
| 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 |
|
| Data | A data em que a linhagem foi gerada. Essa é uma coluna particionada. |
|
| string | O ID exclusivo do registro de linhagem. Esse valor é gerado automaticamente e não pode ser associado a nenhuma tabela. |
|
| string | O ID exclusivo de um evento de linhagem única. Várias linhas podem compartilhar o mesmo |
|
| string | O ID exclusivo de uma instrução de consulta que gerou o evento de linhagem. Esse é um key externo para join com a tabela do sistema de história de consulta. Esse valor só é definido quando a consulta é executada a partir de um SQL warehouse. |
|
| struct | Metadados sobre a entidade responsável pelo evento de linhagem. | Veja os metadados da entidade |
As colunas entity_type
, entity_run_id
e entity_id
foram descontinuadas. Para obter uma visão completa das entidades envolvidas no registro de linhagem, use a coluna entity_metadata
.
Lendo tabelas do sistema de linhagem
- 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.
Referência de metadados da entidade
A estrutura entity_metadata
tem o seguinte esquema:
job_info:
job_id: "string"
job_run_id: "string"
dashboard_id: "string"
legacy_dashboard_id: "string"
notebook_id: "string"
sql_query_id: "string"
dlt_pipeline_info:
dlt_pipeline_id: "string"
dlt_update_id: "string"
Databricks registra eventos de linhagem de DLT, Notebook, Job, consultas Databricks SQL e dashboards. Eventos de outras entidades não são suportados.
Vários valores podem ser preenchidos dependendo do tipo de evento. Por exemplo, um trabalho executando uma tarefa de Notebook preencheria os sites job_info
e notebook_id
.
Se todos os valores em entity_metadata
forem null
, isso significa que nenhuma entidade da Databricks esteve 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.
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:
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:
|
|
|
|
|
|
---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
O registro em system.access.column_lineage
ficaria assim:
|
|
|
|
|
|
|
---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
SELECT * FROM delta.`gcp://mybucket/table1`;
Se você estiver tentando consultar registros de linhagem para uma tabela externa referenciada por caminho, deverá 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:
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.
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:
display(getLineageForTable("table_name"))