Przechwytywanie i wyświetlanie pochodzenia danych przy użyciu wykazu aparatu Unity
W tym artykule opisano sposób przechwytywania i wizualizowania pochodzenia danych przy użyciu Eksploratora wykazu, tabel systemu pochodzenia danych i interfejsu API REST.
Wykaz aparatu Unity umożliwia przechwytywanie pochodzenia danych środowiska uruchomieniowego między zapytaniami uruchamianymi w usłudze Azure Databricks. Pochodzenie jest obsługiwane dla wszystkich języków i jest przechwytywane na poziomie kolumny. Dane pochodzenia obejmują notesy, zadania i pulpity nawigacyjne związane z zapytaniem. Pochodzenie można wizualizować w Eksploratorze wykazu niemal w czasie rzeczywistym i pobierać programowo przy użyciu tabel systemowych pochodzenia i interfejsu API REST usługi Databricks.
Pochodzenie jest agregowane we wszystkich obszarach roboczych dołączonych do magazynu metadanych wykazu aparatu Unity. Oznacza to, że pochodzenie przechwycone w jednym obszarze roboczym jest widoczne w dowolnym innym obszarze roboczym udostępniającym ten magazyn metadanych. Użytkownicy muszą mieć odpowiednie uprawnienia do wyświetlania danych pochodzenia. Dane pochodzenia są przechowywane przez 1 rok.
Na poniższej ilustracji przedstawiono przykładowy wykres pochodzenia. Konkretne funkcje pochodzenia danych i przykłady zostały omówione w dalszej części tego artykułu.
Aby uzyskać informacje na temat śledzenia pochodzenia modelu uczenia maszynowego, zobacz Track the data lineage of a model in Unity Catalog (Śledzenie pochodzenia danych modelu w wykazie aparatu Unity).
Wymagania
Do przechwytywania pochodzenia danych przy użyciu usługi Unity Catalog wymagane są następujące elementy:
Obszar roboczy musi mieć włączony wykaz aparatu Unity.
Tabele muszą być zarejestrowane w magazynie metadanych usługi Unity Catalog.
Zapytania muszą używać elementu DataFrame platformy Spark (na przykład funkcji Spark SQL, które zwracają element DataFrame) lub interfejsów SQL usługi Databricks. Przykłady zapytań SQL i PySpark usługi Databricks można znaleźć w temacie Przykłady.
Aby wyświetlić pochodzenie tabeli lub widoku, użytkownicy muszą mieć co najmniej
BROWSE
uprawnienia do katalogu nadrzędnego tabeli lub widoku. Wykaz nadrzędny musi być również dostępny z poziomu obszaru roboczego. Zobacz Ograniczanie dostępu katalogu do określonych obszarów roboczych.Aby wyświetlić informacje o pochodzenia notesów, zadań lub pulpitów nawigacyjnych, użytkownicy muszą mieć uprawnienia do tych obiektów zgodnie z definicją ustawień kontroli dostępu w obszarze roboczym. Zobacz Uprawnienia pochodzenia.
Aby wyświetlić pochodzenie potoku obsługującego wykaz aparatu Unity, musisz mieć
CAN_VIEW
uprawnienia do potoku.Śledzenie pochodzenia danych przesyłanych strumieniowo między tabelami delty wymaga środowiska Databricks Runtime 11.3 LTS lub nowszego.
Śledzenie pochodzenia kolumn dla obciążeń usługi Delta Live Tables wymaga środowiska Databricks Runtime 13.3 LTS lub nowszego.
Może być konieczne zaktualizowanie reguł zapory ruchu wychodzącego, aby umożliwić łączność z punktem końcowym usługi Event Hubs na płaszczyźnie sterowania usługi Azure Databricks. Zwykle ma to zastosowanie, jeśli obszar roboczy usługi Azure Databricks jest wdrażany we własnej sieci wirtualnej (nazywanej również iniekcją sieci wirtualnej). Aby uzyskać punkt końcowy usługi Event Hubs dla regionu obszaru roboczego, zobacz Magazyn metadanych, magazyn obiektów blob artefaktów, magazyn tabel systemowych, magazyn obiektów blob dzienników i adresy IP punktów końcowych usługi Event Hubs. Aby uzyskać informacje na temat konfigurowania tras zdefiniowanych przez użytkownika (UDR) dla usługi Azure Databricks, zobacz Ustawienia trasy zdefiniowanej przez użytkownika dla usługi Azure Databricks.
Przykłady
Uwaga
W poniższych przykładach użyto nazwy
lineage_data
katalogu i nazwylineagedemo
schematu . Aby użyć innego wykazu i schematu, zmień nazwy używane w przykładach.Aby ukończyć ten przykład, musisz mieć
CREATE
uprawnienia iUSE SCHEMA
w schemacie. Administrator magazynu metadanych, właściciel wykazu, właściciel schematu lub użytkownik z uprawnieniamiMANAGE
w schemacie może przyznać te uprawnienia. Aby na przykład przyznać wszystkim użytkownikom w grupie uprawnienie "data_engineers" do tworzenia tabel wlineagedemo
schemacie wlineage_data
wykazie, użytkownik z jednym z powyższych uprawnień lub ról może uruchamiać następujące zapytania:CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
Przechwytywanie i eksplorowanie pochodzenia
Aby przechwycić dane pochodzenia:
Przejdź do strony docelowej usługi Azure Databricks, kliknij pozycję Nowy na pasku bocznym, a następnie wybierz pozycję Notes z menu.
Wprowadź nazwę notesu i wybierz pozycję SQL w języku domyślnym.
W obszarze Klaster wybierz klaster z dostępem do wykazu aparatu Unity.
Kliknij pozycję Utwórz.
W pierwszej komórce notesu wprowadź następujące zapytania:
CREATE TABLE IF NOT EXISTS lineage_data.lineagedemo.menu ( recipe_id INT, app string, main string, dessert string ); INSERT INTO lineage_data.lineagedemo.menu (recipe_id, app, main, dessert) VALUES (1,"Ceviche", "Tacos", "Flan"), (2,"Tomato Soup", "Souffle", "Creme Brulee"), (3,"Chips","Grilled Cheese","Cheesecake"); CREATE TABLE lineage_data.lineagedemo.dinner AS SELECT recipe_id, concat(app," + ", main," + ",dessert) AS full_menu FROM lineage_data.lineagedemo.menu
Aby uruchomić zapytania, kliknij komórkę i naciśnij shift+enter lub kliknij i wybierz pozycję Uruchom komórkę.
Aby wyświetlić pochodzenie wygenerowane przez następujące zapytania za pomocą Eksploratora wykazu:
W polu Wyszukaj na górnym pasku obszaru roboczego usługi Azure Databricks wyszukaj tabelę
lineage_data.lineagedemo.dinner
i wybierz ją.Wybierz kartę Pochodzenie . Zostanie wyświetlony panel pochodzenia i wyświetli powiązane tabele (na potrzeby tego przykładu
menu
jest to tabela).Aby wyświetlić interaktywny wykres pochodzenia danych, kliknij pozycję Zobacz wykres pochodzenia danych. Domyślnie jeden poziom jest wyświetlany na grafie. Kliknij ikonę w węźle, aby wyświetlić więcej połączeń, jeśli są dostępne.
Kliknij strzałkę, która łączy węzły na wykresie pochodzenia, aby otworzyć panel połączenia pochodzenia. Panel połączenia pochodzenia zawiera szczegółowe informacje o połączeniu, w tym tabele źródłowe i docelowe, notesy i zadania.
Aby wyświetlić notes skojarzony z
dinner
tabelą, wybierz notes w panelu połączenia pochodzenia lub zamknij wykres pochodzenia, a następnie kliknij przycisk Notesy. Aby otworzyć notes na nowej karcie, kliknij nazwę notesu.Aby wyświetlić pochodzenie na poziomie kolumny, kliknij kolumnę na wykresie, aby wyświetlić łącza do powiązanych kolumn. Na przykład kliknięcie kolumny "full_menu" spowoduje wyświetlenie kolumn nadrzędnych, z których pochodzi kolumna:
Aby wyświetlić pochodzenie przy użyciu innego języka, na przykład Python:
Otwórz utworzony wcześniej notes, utwórz nową komórkę i wprowadź następujący kod w języku Python:
%python from pyspark.sql.functions import rand, round df = spark.range(3).withColumn("price", round(10*rand(seed=42),2)).withColumnRenamed("id","recipe_id") df.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.price") dinner = spark.read.table("lineage_data.lineagedemo.dinner") price = spark.read.table("lineage_data.lineagedemo.price") dinner_price = dinner.join(price, on="recipe_id") dinner_price.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.dinner_price")
Uruchom komórkę, klikając komórkę i naciskając shift+enter lub klikająci wybierając pozycję Uruchom komórkę.
W polu Wyszukaj na górnym pasku obszaru roboczego usługi Azure Databricks wyszukaj tabelę
lineage_data.lineagedemo.price
i wybierz ją.Przejdź do karty Pochodzenie i kliknij pozycję Zobacz wykres pochodzenia. Kliknij ikony, aby eksplorować pochodzenie danych wygenerowane przez zapytania.
Kliknij strzałkę, która łączy węzły na wykresie pochodzenia, aby otworzyć panel połączenia pochodzenia. Panel połączenia pochodzenia zawiera szczegółowe informacje o połączeniu, w tym tabele źródłowe i docelowe, notesy i zadania.
Przechwytywanie i wyświetlanie pochodzenia przepływu pracy
Pochodzenie jest również przechwytywane dla dowolnego przepływu pracy, który odczytuje lub zapisuje w wykazie aparatu Unity. Aby wyświetlić pochodzenie przepływu pracy usługi Azure Databricks:
Kliknij pozycję Nowy na pasku bocznym i wybierz pozycję Notes z menu.
Wprowadź nazwę notesu i wybierz pozycję SQL w języku domyślnym.
Kliknij pozycję Utwórz.
W pierwszej komórce notesu wprowadź następujące zapytanie:
SELECT * FROM lineage_data.lineagedemo.menu
Kliknij pozycję Harmonogram na górnym pasku. W oknie dialogowym harmonogramu wybierz pozycję Ręczne, wybierz klaster z dostępem do katalogu aparatu Unity, a następnie kliknij przycisk Utwórz.
Kliknij przycisk Uruchom teraz.
W polu Wyszukaj na górnym pasku obszaru roboczego usługi Azure Databricks wyszukaj tabelę
lineage_data.lineagedemo.menu
i wybierz ją.Na karcie Pochodzenie kliknij pozycję Przepływy pracy i wybierz kartę Podrzędne. Nazwa zadania jest wyświetlana w obszarze Nazwa zadania jako użytkownik
menu
tabeli.
Przechwytywanie i wyświetlanie pochodzenia pulpitu nawigacyjnego
Aby utworzyć pulpit nawigacyjny i wyświetlić jego pochodzenie danych:
Przejdź do strony docelowej usługi Azure Databricks i otwórz Eksploratora wykazu, klikając pozycję Wykaz na pasku bocznym.
Kliknij nazwę wykazu, kliknij pozycję Pochodzenie, a następnie wybierz tabelę
menu
. Możesz również użyć pola Wyszukaj na górnym pasku, aby wyszukać tabelęmenu
.Kliknij pozycję Otwórz na pulpicie nawigacyjnym.
Wybierz kolumny, które chcesz dodać do pulpitu nawigacyjnego, a następnie kliknij przycisk Utwórz.
Publikowanie pulpitu nawigacyjnego.
Tylko opublikowane pulpity nawigacyjne są śledzone w pochodzenia danych.
W polu Wyszukaj na górnym pasku wyszukaj tabelę
lineage_data.lineagedemo.menu
i wybierz ją.Na karcie Pochodzenie kliknij pozycję Pulpity nawigacyjne. Pulpit nawigacyjny jest wyświetlany w obszarze Nazwa pulpitu nawigacyjnego jako użytkownik tabeli menu.
Uprawnienia pochodzenia
Wykresy pochodzenia współużytkuje ten sam model uprawnień co katalog aparatu Unity. Jeśli użytkownik nie ma BROWSE
uprawnień lub SELECT
w tabeli, nie może eksplorować pochodzenia danych. Ponadto użytkownicy mogą wyświetlać tylko notesy, zadania i pulpity nawigacyjne, do których mają uprawnienia do wyświetlania. Jeśli na przykład uruchomisz następujące polecenia dla użytkownika userA
niebędącego administratorem:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
W przypadku userA
wyświetlenia wykresu pochodzenia dla lineage_data.lineagedemo.menu
tabeli zostaną wyświetlone tabele menu
. Nie będą one mogły wyświetlać informacji o skojarzonych tabelach, takich jak tabela podrzędna lineage_data.lineagedemo.dinner
. Tabela dinner
jest wyświetlana jako masked
węzeł na ekranie do userA
elementu i userA
nie może rozwinąć grafu w celu ujawnienia tabel podrzędnych z tabel, do których nie mają uprawnień dostępu.
Jeśli uruchomisz następujące polecenie, aby udzielić uprawnienia użytkownikowi BROWSE
userB
niebędącemu administratorem:
GRANT BROWSE on lineage_data to `userA@company.com`;
userB
Teraz można wyświetlić wykres pochodzenia dla dowolnej tabeli w schemacie lineage_data
.
Aby uzyskać więcej informacji na temat zarządzania dostępem do zabezpieczanych obiektów w wykazie aparatu Unity, zobacz Zarządzanie uprawnieniami w wykazie aparatu Unity. Aby uzyskać więcej informacji na temat zarządzania dostępem do obiektów obszaru roboczego, takich jak notesy, zadania i pulpity nawigacyjne, zobacz Listy kontroli dostępu.
Usuwanie danych pochodzenia
Ostrzeżenie
Poniższe instrukcje usuwają wszystkie obiekty przechowywane w wykazie aparatu Unity. Skorzystaj z tych instrukcji tylko w razie potrzeby. Na przykład, aby spełnić wymagania dotyczące zgodności.
Aby usunąć dane pochodzenia, należy usunąć magazyn metadanych zarządzający obiektami wykazu aparatu Unity. Aby uzyskać więcej informacji na temat usuwania magazynu metadanych, zobacz Usuwanie magazynu metadanych. Dane zostaną usunięte w ciągu 90 dni.
Wykonywanie zapytań dotyczących danych pochodzenia przy użyciu tabel systemowych
Tabele systemowe pochodzenia umożliwiają programowe wykonywanie zapytań dotyczących danych pochodzenia. Aby uzyskać szczegółowe instrukcje, zobacz Monitorowanie aktywności konta za pomocą tabel systemowych i odwołania do tabel systemowych pochodzenia.
Jeśli obszar roboczy znajduje się w regionie, który nie obsługuje tabel systemowych pochodzenia, możesz też programowo pobrać dane pochodzenia danych za pomocą interfejsu API REST pochodzenia danych.
Pobieranie pochodzenia przy użyciu interfejsu API REST pochodzenia danych
Interfejs API pochodzenia danych umożliwia pobieranie pochodzenia tabel i kolumn. Jeśli jednak obszar roboczy znajduje się w regionie obsługującym tabele systemowe pochodzenia, należy użyć zapytań tabeli systemowej zamiast interfejsu API REST. Tabele systemowe to lepsza opcja programowego pobierania danych pochodzenia. Większość regionów obsługuje tabele systemowe pochodzenia.
Ważne
Aby uzyskać dostęp do interfejsów API REST, należy uwierzytelnić się.
Pobieranie pochodzenia tabeli
W tym przykładzie dinner
są pobierane dane pochodzenia dla tabeli.
Żądanie
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/table-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "include_entity_lineage": true}'
Zastąp element <workspace-instance>
.
W tym przykładzie jest używany plik .netrc .
Response
{
"upstreams": [
{
"tableInfo": {
"name": "menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
],
"downstreams": [
{
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
},
{
"tableInfo": {
"name": "dinner_price",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
]
}
Pobieranie pochodzenia kolumn
W tym przykładzie dinner
są pobierane dane kolumn dla tabeli.
Żądanie
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/column-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "column_name": "dessert"}'
Zastąp element <workspace-instance>
.
W tym przykładzie jest używany plik .netrc .
Response
{
"upstream_cols": [
{
"name": "dessert",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "main",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "app",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
}
],
"downstream_cols": [
{
"name": "full_menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "dinner_price",
"table_type": "TABLE"
}
]
}
Ograniczenia
Ponieważ pochodzenie jest obliczane w rocznym oknie kroczącym, pochodzenie zebrane ponad rok temu nie jest wyświetlane. Jeśli na przykład zadanie lub zapytanie odczytuje dane z tabeli A i zapisuje w tabeli B, połączenie między tabelą A a tabelą B jest wyświetlane tylko przez jeden rok. Dane pochodzenia można filtrować według przedziału czasu w oknie jednego roku.
Zadania korzystające z żądania interfejsu API zadań
runs submit
są niedostępne podczas wyświetlania pochodzenia danych. Pochodzenie danych na poziomie tabeli i kolumny jest nadal przechwytywane podczas korzystania zruns submit
żądania, ale link do przebiegu nie jest przechwytywany.Usługa Unity Catalog przechwytuje w maksymalnym możliwym zakresie pochodzenie na poziomie kolumny. Istnieją jednak przypadki, w których nie można przechwycić pochodzenia na poziomie kolumny.
Pochodzenie kolumn jest obsługiwane tylko wtedy, gdy zarówno źródło, jak i element docelowy są przywoływane według nazwy tabeli (przykład:
select * from <catalog>.<schema>.<table>
). Nie można przechwycić pochodzenia kolumn, jeśli źródło lub obiekt docelowy jest adresowany przez ścieżkę (przykład:select * from delta."s3://<bucket>/<path>"
).Jeśli nazwa tabeli lub widoku zostanie zmieniona, pochodzenie nie zostanie przechwycone dla zmienionej tabeli lub widoku.
Jeśli zmieniono nazwę schematu lub wykazu, pochodzenie nie jest przechwytywane dla tabel i widoków w zmienionym wykazie lub schemacie.
Jeśli używasz punktów kontrolnych zestawu danych Spark SQL, pochodzenie nie jest przechwytywane.
W większości przypadków usługa Unity Catalog przechwytuje pochodzenie z potoków Delta Live Tables. Jednak w niektórych przypadkach nie można zagwarantować całkowitego pokrycia pochodzenia, na przykład gdy potoki używają interfejsu API ZASTOSUJ ZMIANY lub tabel TYMCZASOWYch.
Pochodzenie nie przechwytuje funkcji stosu.
Globalne widoki tymczasowe nie są przechwytywane w pochodzenia.
Tabele w obszarze
system.information_schema
nie są przechwytywane w pochodzenia.Pełne pochodzenie danych na poziomie kolumny nie jest domyślnie przechwytywane dla
MERGE
operacji.Możesz włączyć przechwytywanie pochodzenia dla
MERGE
operacji, ustawiając właściwośćspark.databricks.dataLineage.mergeIntoV2Enabled
Spark natrue
wartość . Włączenie tej flagi może spowolnić wydajność zapytań, szczególnie w obciążeniach obejmujących bardzo szerokie tabele.