Udostępnij za pośrednictwem


Odniesienie do tabel systemowych powiązań

Ważne

Ta tabela systemowa znajduje się w publicznej wersji zapoznawczej. Aby uzyskać dostęp do tabeli, schemat musi być włączony w katalogu system. Aby uzyskać więcej informacji, zobacz Włączanie schematów tabel systemowych.

Ten artykuł zawiera omówienie dwóch tabel systemowych pochodzenia. Te tabele systemowe bazują na funkcji pochodzenia danych Unity Catalog , co umożliwia programowe wykonywanie zapytań dotyczących pochodzenia danych, wspierając podejmowanie decyzji i sporządzanie raportów.

Uwaga

Obie tabele rodowodowe reprezentują podzbiór wszystkich zdarzeń odczytu/zapisu, ponieważ nie zawsze można uchwycić rodowód. Rekordy są emitowane tylko wtedy, gdy pochodzenie może zostać wywnioskowane.

Tabela pochodzenia tabel

Tabela systemu śledzenia pochodzenia tabeli zawiera rekord dla każdego zdarzenia odczytu lub zapisu w tabeli lub ścieżce katalogu Unity. To obejmuje, ale nie ogranicza się do uruchamiania zadań, uruchamiania notesów i pulpitów nawigacyjnych zaktualizowanych w wyniku zdarzenia odczytu lub zapisu.

ścieżka tabeli: ta tabela systemowa znajduje się w system.access.table_lineage.

schemat pochodzenia tabel

Tabela systemu pochodzenia tabel używa następującego schematu.

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

- Notatnik: command_run_id
- Zadanie: job_run_id
— Zapytanie SQL usługi Databricks: query_run_id
— Pulpit nawigacyjny: query_run_id
— Pulpit nawigacyjny starszej wersji: query_run_id
- Potok: pipeline_update_id

Jeśli entity_type jest NULL, entity_run_id jest NULL.
- Notatnik: 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ącą tabelę źródłową. catalog.schema.table
source_table_catalog string Katalog tabeli źródłowej. catalog
source_table_schema string Schemat tabeli źródłowej. schema
source_table_name string Nazwa tabeli źródłowej. table
source_path string Lokalizacja tabeli źródłowej w chmurze lub ścieżka, jeśli dane są odczytywane bezpośrednio z chmury. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type string Typ źródła. Wartość to TABLE, PATH, VIEW, lub STREAMING_TABLE. TABLE
target_table_full_name string Trzyczęściowa nazwa identyfikująca tabelę docelową. catalog.schema.table
target_table_catalog ciąg znaków Katalog tabeli docelowej. catalog
target_table_schema string Schemat tabeli docelowej. schema
target_table_name string Nazwa tabeli docelowej. table
target_path string Lokalizacja tabeli docelowej w pamięci w chmurze. 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 rodowód. 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 znacznik czasu Sygnatura czasowa, kiedy pochodzenie danych zostało wygenerowane. Informacje o strefie czasowej są rejestrowane na końcu wartości, gdzie +00:00 reprezentuje czas UTC. 2023-06-20T19:47:21.194+00:00
event_date data Data wygenerowania rodowodu danych. Jest to kolumna partycjonowana. 2023-06-20

Tabela pochodzenia kolumn

Tabela pochodzenia kolumn nie zawiera zdarzeń, które nie mają źródła. Na przykład, jeśli wstawisz jawne wartości do kolumny, nie zostanie to zapisane. Jeśli odczytujesz kolumnę, zostanie przechwycona niezależnie od tego, czy zapisujesz dane wyjściowe. Pochodzenie kolumn nie jest obsługiwane w przypadku biblioteki DLT.

ścieżka tabeli: ta tabela systemowa znajduje się w system.access.column_lineage.

Schemat pochodzenia kolumn

Tabela systemu pochodzenia kolumn używa następującego schematu:

Nazwa kolumny Typ danych opis Przykład
account_id string Identyfikator konta usługi Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id string Identyfikator metamagazynu Unity Catalog. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id string Identyfikator obszaru roboczego 123456789012345
entity_type string Rodzaj jednostki, z której została przechwycona transakcja genealogii. Wartość to NOTEBOOK, JOB, PIPELINE, DASHBOARD_V3 (Pulpit nawigacyjny), DBSQL_DASHBOARD (Starszy pulpit nawigacyjny), DBSQL_QUERY, LUB NULL. NOTEBOOK
entity_id string Identyfikator jednostki, z której pochodzi transakcja pochodzenia. Jeśli entity_type jest NULL, entity_id jest NULL. -Notatnik: 23098402394234
-Zadanie: 23098402394234
— Zapytanie SQL usługi Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Deska rozdzielcza: 01ef070d110715f2b6d3061b8bda89ea
— Przestarzały 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:

- Notatnik: command_run_id
- Zadanie: job_run_id
— Zapytanie SQL w Databricks: query_run_id
— Pulpit nawigacyjny: query_run_id
— Klasyczny pulpit nawigacyjny: query_run_id
- Potok: pipeline_update_id

Jeśli entity_type jest NULL, wtedy entity_run_id jest NULL.
- Notatnik: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
-Zadanie: 51090402394234
— Zapytanie SQL usługi Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
- Panel sterowania: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
— Tradycyjny pulpit nawigacyjny: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
-Rurociąg: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name string Trzyczęściowa nazwa identyfikującą tabelę źródłową. catalog.schema.table
source_table_catalog string Katalog tabeli źródłowej. catalog
source_table_schema łańcuch Schemat tabeli źródłowej. schema
source_table_name string Nazwa tabeli źródłowej. table
source_path string Lokalizacja tabeli źródłowej w magazynie w chmurze, lub ścieżka, jeśli dane są odczytywane bezpośrednio z tego magazynu. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type string Typ źródła. Wartość to TABLE, PATH, VIEW, lub STREAMING_TABLE. TABLE
source_column_name string Nazwa kolumny źródłowej. date
target_table_full_name string Trzyczęściowa nazwa identyfikująca tabelę docelową. catalog.schema.table
target_table_catalog string Katalog tabeli docelowej. catalog
target_table_schema string Schemat tabeli docelowej. schema
target_table_name string Nazwa tabeli docelowej. table
target_path string Lokalizacja tabeli docelowej w pamięci w chmurze. 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 kolumny docelowej. date
created_by string Użytkownik, który wygenerował tę linię. 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 znacznik czasu Moment utworzenia linii. Informacje o strefie czasowej są rejestrowane na końcu wartości, gdzie +00:00 reprezentuje czas UTC. 2023-06-20T19:47:21.194+00:00
event_date data Data wygenerowania rodowodu. Jest to kolumna partycjonowana. 2023-06-20

Odczytywanie tabel systemowych genealogii

Podczas analizowania tabel systemowych pochodzenia należy zwrócić uwagę na następujące kwestie:

  • W przypadku entity_typeusługa Azure Databricks obsługuje biblioteki DLT, notesy, zadania, zapytania SQL usługi Databricks i 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 do zapisu: 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 tabeli systemu genealogicznego

Przykładem, jak rejestrowane jest pochodzenie w tabelach systemowych, jest przykładowe zapytanie, po którym następują 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 kolumny pochodzenia są wyświetlane w powyższym przykładzie. Aby uzyskać pełny schemat, zobacz powyższy schemat pochodzenia .

Rozwiązywanie problemów z zapytaniami tabel zewnętrznych

W przypadku odwołania się do tabeli zewnętrznej, korzystając ze ścieżki przechowywania w chmurze, skojarzony rekord pochodzenia danych zawiera tylko nazwę ścieżki, a nie nazwę tabeli. Na przykład rekord pochodzenia dla tego zapytania będzie zawierać nazwę ścieżki, a nie nazwę tabeli:

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

Jeśli próbujesz wykonać zapytanie danych dotyczących pochodzenia dla zewnętrznej tabeli odwoływanej za pomocą ścieżki, powinieneś/powinnaś filtrować zapytanie, używając source_path lub target_path zamiast source_table_full_name lub target_table_full_name. Na przykład następujące zapytanie ściąga wszystkie rekordy pochodzenia dla tabeli zewnętrznej:

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: Pobieranie rekordów rodowodowych na podstawie nazwy tabeli zewnętrznej

Jeśli nie chcesz ręcznie pobierać ścieżki do magazynu w chmurze, aby znaleźć linię, możesz użyć następującej funkcji, aby pobrać dane linii przy użyciu nazwy tabeli. Możesz również zastąpić system.access.table_lineagesystem.access.column_lineage w funkcji, jeśli chcesz wykonać zapytanie dotyczące pochodzenia kolumn.

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ć rekordy pochodzenia dla tabeli zewnętrznej:

display(getLineageForTable("table_name"))