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 , VIEW lub 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 , VIEW lub 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_type
usł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
jakonull
, 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_lineage
system.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"))