Udostępnij za pośrednictwem


Dokumentacja dotycząca systemu pochodzenia tables

Ważne

Ten system table znajduje się w publicznej wersji testowej. Aby uzyskać dostęp do table, schema musi być włączona w systemcatalog. Aby uzyskać więcej informacji, zobacz Włączanie schematów table systemu.

Ten artykuł zawiera omówienie systemu dwulinowości tables. Te systemy oparte na funkcji pochodzenia danych aparatu Unity , umożliwiając programowe wykonywanie zapytań dotyczących danych pochodzenia w celu napędzania podejmowania decyzji i raportów.

Uwaga

Oba rodowody tables reprezentują podzbiór wszystkich zdarzeń odczytu/zapisu, ponieważ nie zawsze możliwe jest śledzenie rodowodu danych. Rekordy są emitowane tylko wtedy, gdy pochodzenie może zostać wywnioskowane.

Table pochodzenia table

System śledzenia tabletable zawiera rekord dla każdego zdarzenia odczytu lub zapisu na Unity Catalogtable lub ścieżce. Dotyczy to również uruchamiania zadań, uruchamiania notesu i pulpitów nawigacyjnych zaktualizowanych przy użyciu zdarzenia odczytu lub zapisu.

Table ścieżka: ten system table znajduje się przy system.access.table_lineage.

Table pochodzenia schema

System linii tabletable używa następującego schema.

nazwa Column Typ danych opis Przykład
account_id string Identyfikator konta usługi Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id string Identyfikator magazynu metadanych Unity Catalog. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id string Identyfikator obszaru roboczego 123456789012345
entity_type string Typ jednostki, z którego przechwycono transakcję pochodzenia. Wartość to NOTEBOOK, , JOB, PIPELINEDASHBOARD_V3 (Pulpit nawigacyjny), DBSQL_DASHBOARD (Starszy pulpit nawigacyjny), DBSQL_QUERY, LUB NULL. NOTEBOOK
entity_id string Identyfikator jednostki przechwycono transakcję pochodzenia. Jeśli entity_type parametr ma NULLwartość , entity_id to NULL. -Notes: 23098402394234
-Zadanie: 23098402394234
— Zapytanie SQL usługi Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Deska rozdzielcza: 01ef070d110715f2b6d3061b8bda89ea
— Starszy pulpit nawigacyjny: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Rurociąg: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id string Identyfikator opisujący unikatowy przebieg jednostki lub NULL. Różni się to dla każdego typu jednostki:

- Notes: command_run_id
- Zadanie: job_run_id
— Zapytanie SQL usługi Databricks: query_run_id
— Pulpit nawigacyjny: query_run_id
— Starszy pulpit nawigacyjny: query_run_id
- Potok: pipeline_update_id

Jeśli entity_type parametr ma NULLwartość , entity_run_id to NULL.
-Notes: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
-Zadanie: 51090402394234
— Zapytanie SQL usługi Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Deska rozdzielcza: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
— Starszy pulpit nawigacyjny: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
-Rurociąg: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name string Trzyczęściowa nazwa identyfikująca źródło table. catalog.schema.table
source_table_catalog string catalog tableźródłowej . catalog
source_table_schema string schema element źródłowy table. schema
source_table_name string Nazwa źródła table. table
source_path string Lokalizacja w przechowywaniu w chmurze źródłowego tablelub ścieżka, jeśli odczyt odbywa się bezpośrednio z przechowywania w chmurze. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type string Typ źródła. Wartość to TABLE, , PATHVIEW, lub STREAMING_TABLE. TABLE
target_table_full_name string Trzyczęściowa nazwa identyfikująca docelową table. catalog.schema.table
target_table_catalog string catalog celu table. catalog
target_table_schema string schema obiektu docelowego table. schema
target_table_name string Nazwa celu table. table
target_path string Lokalizacja w przechowywaniu w chmurze celowego pliku table. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type string Typ obiektu docelowego. Wartość to TABLE, , PATH, VIEWlub STREAMING TABLE. TABLE
created_by string Użytkownik, który wygenerował ten pochodzenie. Może to być nazwa użytkownika usługi Azure Databricks, identyfikator jednostki usługi Azure Databricks, "System-User" lub NULL jeśli nie można przechwycić informacji o użytkowniku. crampton.rods@email.com
event_time timestamp Sygnatura czasowa generowania pochodzenia. Timezone informacje rejestrowane są na końcu wartości przy +00:00 reprezentującym UTC. 2023-06-20T19:47:21.194+00:00
event_date data Data wygenerowania pochodzenia danych. To partycjonowana column. 2023-06-20

Column pochodzenia table

Linia columntable nie obejmuje zdarzeń, które nie mają źródła. Na przykład, jeśli operacja insert do column zostanie wykonana przy użyciu jawnego values, nie zostanie przechwycona. Jeśli odczytujesz column, zostanie przechwycony niezależnie od tego, czy zapisujesz dane wyjściowe. Column lineage nie jest obsługiwane w przypadku Delta Live Tables.

Table ścieżka: ten system table znajduje się w lokalizacji system.access.column_lineage.

Column pochodzenia schema

System pochodzenia columntable używa następujących schema:

nazwa Column Typ danych opis Przykład
account_id string Identyfikator konta usługi Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id string Identyfikator magazynu Unity Catalog. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id string Identyfikator obszaru roboczego 123456789012345
entity_type string Typ jednostki, z którego przechwycono transakcję pochodzenia. Wartość to NOTEBOOK, , JOB, PIPELINEDASHBOARD_V3 (Pulpit nawigacyjny), DBSQL_DASHBOARD (Starszy pulpit nawigacyjny), DBSQL_QUERY, LUB NULL. NOTEBOOK
entity_id string Identyfikator jednostki przechwycono transakcję pochodzenia. Jeśli entity_type parametr ma NULLwartość , entity_id to NULL. -Notes: 23098402394234
-Zadanie: 23098402394234
— Zapytanie SQL usługi Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Deska rozdzielcza: 01ef070d110715f2b6d3061b8bda89ea
— Starszy pulpit nawigacyjny: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Rurociąg: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id string Identyfikator opisujący unikatowy przebieg jednostki lub NULL. Różni się to dla każdego typu jednostki:

- Notes: command_run_id
- Zadanie: job_run_id
— Zapytanie SQL usługi Databricks: query_run_id
— Pulpit nawigacyjny: query_run_id
— Starszy pulpit nawigacyjny: query_run_id
- Potok: pipeline_update_id

Jeśli entity_type parametr ma NULLwartość , entity_run_id to NULL.
-Notes: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
-Zadanie: 51090402394234
— Zapytanie SQL usługi Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Deska rozdzielcza: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
— Starszy pulpit nawigacyjny: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
-Rurociąg: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name string Trzyczęściowa nazwa identyfikująca źródło table. catalog.schema.table
source_table_catalog string catalog obiektu źródłowego table. catalog
source_table_schema string schema tableźródłowej . schema
source_table_name string Nazwa źródła table. table
source_path string Lokalizacja w chmurze źródłowego tablelub ścieżka, jeśli jest bezpośrednio odczytywana z chmury. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type string Typ źródła. Wartość to TABLE, , PATHVIEW, lub STREAMING_TABLE. TABLE
source_column_name string Nazwa źródła column. date
target_table_full_name string Trzyczęściowa nazwa identyfikująca cel table. catalog.schema.table
target_table_catalog string catalog celu table. catalog
target_table_schema string schema celu table. schema
target_table_name string Nazwa celu table. table
target_path string Lokalizacja docelowa w chmurze table. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type string Typ obiektu docelowego. Wartość to TABLE, , PATH, VIEWlub STREAMING TABLE. TABLE
target_column_name string Nazwa celu column. date
created_by string Użytkownik, który wygenerował ten pochodzenie. Może to być nazwa użytkownika usługi Azure Databricks, identyfikator jednostki usługi Azure Databricks, "System-User" lub NULL jeśli nie można przechwycić informacji o użytkowniku. crampton.rods@email.com
event_time timestamp Sygnatura czasowa generowania pochodzenia. Timezone informacje są rejestrowane na końcu wartości, a +00:00 reprezentuje UTC. 2023-06-20T19:47:21.194+00:00
event_date data Data wygenerowania pochodzenia danych. To jest partycjonowana column. 2023-06-20

System odczytywania pochodzenia tables

Podczas analizowania systemu pochodzenia tableszwróć uwagę na następujące kwestie:

  • W przypadku entity_typeobsługa w ramach usługi Azure Databricks obejmuje Delta Live Tables, notesy, zadania, zapytania SQL Databricks oraz pulpity nawigacyjne. Zdarzenia z innych jednostek nie są obsługiwane.
  • Jeśli widzisz element entity_type jako null, oznacza to, że żadna jednostka usługi Azure Databricks nie jest zaangażowana w to zdarzenie. Może to być na przykład wynik zapytania JDBC lub kliknięcie przez użytkownika na karcie Przykładowe dane w interfejsie użytkownika usługi Azure Databricks.
  • Aby określić, czy zdarzenie było odczytem, czy zapisem, możesz wyświetlić typ źródła i typ docelowy.
    • Tylko do odczytu: typ źródła nie ma wartości null, ale typ docelowy ma wartość null.
    • Tylko zapis: typ docelowy nie ma wartości null, ale typ źródłowy ma wartość null.
    • Odczyt i zapis: typ źródła i typ docelowy nie mają wartości null.

Przykład systemu pochodzenia table

Na przykład, jak pochodzenie danych jest rejestrowane w systemie tables, oto przykładowe zapytanie oraz rekordy pochodzenia tworzone przez zapytanie:

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);

Rekord w pliku system.access.table_lineage będzie wyglądać następująco:

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

Rekord w pliku system.access.column_lineage będzie wyglądać następująco:

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

Uwaga

Nie wszystkie linie columns są przedstawione w powyższym przykładzie. Aby zapoznać się z pełnym schema, zobacz powyższe pochodzenie schema.

Rozwiązywanie problemów z zapytaniami zewnętrznymi table

W przypadku odwołania się do zewnętrznej table przy użyciu ścieżki przechowywania w chmurze skojarzony rekord rodowodu zawiera tylko nazwę ścieżki, a nie nazwę table. Na przykład rekord pochodzenia dla tego zapytania będzie zawierać nazwę ścieżki, a nie nazwę table:

SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;

Jeśli próbujesz wykonać zapytanie dotyczące rekordów pochodzenia dla zewnętrznego table referowanego przez ścieżkę, należy filtrować zapytanie przy użyciu source_path lub target_path zamiast source_table_full_name lub target_table_full_name. Na przykład następujące zapytanie pobiera wszystkie rekordy dotyczące pochodzenia dla zewnętrznego table:

SELECT *
FROM system.access.table_lineage
WHERE
  source_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1" OR
  target_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1";

Przykład: uzyskiwanie rekordów pochodzenia na podstawie nazwy zewnętrznej table

Jeśli nie chcesz ręcznie pobierać ścieżki magazynu w chmurze w celu znalezienia pochodzenia danych, możesz użyć następującej funkcji, aby get danych pochodzenia przy użyciu nazwy table. Możesz również zastąpić system.access.table_lineagesystem.access.column_lineage w funkcji, jeśli chcesz zapytać o linie rodowodową column.

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)
  )

Następnie użyj następującego polecenia, aby wywołać funkcję i wyświetlić zewnętrzne rekordy pochodzenia dla table:

display(getLineageForTable("table_name"))