Informacje o tabelach systemowych pochodzenia
Ważne
Ta tabela systemowa jest dostępna w publicznej wersji zapoznawczej. Aby uzyskać dostęp do tabeli, schemat musi być włączony w system
katalogu. 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 wykazu aparatu Unity, umożliwiając programowe wykonywanie zapytań dotyczących pochodzenia danych w celu napędzania podejmowania decyzji i raportów.
Istnieją dwie tabele systemowe pochodzenia:
system.access.table_lineage
system.access.column_lineage
Uwaga
Obie tabele pochodzenia reprezentują podzbiór wszystkich zdarzeń odczytu/zapisu, ponieważ nie zawsze jest możliwe przechwycenie pochodzenia danych. Rekordy są emitowane tylko wtedy, gdy pochodzenie może zostać wywnioskowane.
Tabela pochodzenia tabel
Tabela systemu pochodzenia tabel zawiera rekord dla każdego zdarzenia odczytu lub zapisu w tabeli lub ścieżce wykazu aparatu Unity. Dotyczy to również uruchamiania zadań, uruchamiania notesu i pulpitów nawigacyjnych zaktualizowanych przy użyciu zdarzenia odczytu lub zapisu.
Tabela pochodzenia kolumn
Tabela pochodzenia kolumn nie zawiera zdarzeń, które nie mają źródła. Jeśli na przykład wstawisz do kolumny przy użyciu jawnych wartości, nie zostanie przechwycony. Jeśli odczytujesz kolumnę, zostanie przechwycona niezależnie od tego, czy zapisujesz dane wyjściowe. Pochodzenie kolumn nie jest obsługiwane w przypadku tabel różnicowych na żywo.
Schemat tabeli systemu pochodzenia
Tabele systemowe pochodzenia używają następującego schematu. Schemat pochodzenia tabeli nie zawiera source_column_name
elementu i target_column_name
.
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 magazynu metadanych wykazu aparatu Unity. | 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ącą tabelę źródłową. | catalog.schema.table |
source_table_catalog |
string | Wykaz tabeli źródłowej. | catalog |
source_table_schema |
string | Schemat tabeli źródłowej. | catalog.schema |
source_table_name |
string | Nazwa tabeli źródłowej. | table |
source_path |
string | Lokalizacja w magazynie w chmurze tabeli źródłowej lub ścieżka, jeśli jest odczytywana bezpośrednio z magazynu 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 |
source_column_name |
string | Nazwa kolumny źródłowej. | date |
target_table_full_name |
string | Trzyczęściowa nazwa identyfikującą tabelę docelową. | catalog.schema.table |
target_table_catalog |
string | Wykaz tabeli docelowej. | catalog |
target_table_schema |
string | Schemat tabeli docelowej. | catalog.schema |
target_table_name |
string | Nazwa tabeli docelowej. | table |
target_path |
string | Lokalizacja w magazynie w chmurze tabeli docelowej. | 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ł 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. Informacje o strefie czasowej są rejestrowane na końcu wartości reprezentującej +00:00 czas UTC. |
2023-06-20T19:47:21.194+00:00 |
event_date |
data | Data wygenerowania pochodzenia danych. Jest to kolumna partycjonowana. | 2023-06-20 |
Odczytywanie tabel systemowych pochodzenia
Podczas analizowania tabel systemowych pochodzenia należy zwrócić uwagę na następujące kwestie:
- W przypadku usługi
entity_type
usługa Azure Databricks obsługuje tabele na żywo delty, 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 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 tabeli systemu pochodzenia
Przykładem sposobu rejestrowania pochodzenia w tabelach systemowych jest przykładowe zapytanie, po którym następuje pochodzenie rekordów tworzonych 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. Pełny schemat można znaleźć w powyższym schemacie pochodzenia.
Rozwiązywanie problemów z zapytaniami tabel zewnętrznych
W przypadku odwołowania się do tabeli zewnętrznej przy użyciu ścieżki magazynu w chmurze skojarzony rekord pochodzenia 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 dotyczące rekordów pochodzenia dla tabeli zewnętrznej, do której odwołuje się ścieżka, należy filtrować zapytanie przy użyciu polecenia 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 pochodzenia na podstawie nazwy tabeli zewnętrznej
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 pobrać dane pochodzenia przy użyciu nazwy tabeli. Możesz również zastąpić system.access.table_lineage
ciąg ciągiem 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"))