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 system
catalog. Aby uzyskać więcej informacji, zobacz Włączanie schematów table systemu.
Ten artykuł zawiera omówienie systemu dwulinowości tables. Te systemy
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 , PIPELINE DASHBOARD_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 NULL wartość , 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 NULL wartość , 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 , , PATH VIEW , 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 , VIEW lub 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 , PIPELINE DASHBOARD_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 NULL wartość , 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 NULL wartość , 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 , , PATH VIEW , 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 , VIEW lub 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_type
obsł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
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 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_lineage
system.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"))