Bagikan melalui


Referensi tabel sistem silsilah data

Penting

Tabel sistem ini ada di Pratinjau Umum. Untuk mengakses tabel, skema harus diaktifkan di katalog Anda system . Untuk informasi selengkapnya, lihat Mengaktifkan skema tabel sistem.

Artikel ini memberikan gambaran umum tentang dua tabel sistem silsilah data. Tabel sistem ini dibangun pada fitur silsilah data Unity Catalog, memungkinkan Anda untuk secara terprogram mengkueri data silsilah data untuk membuat keputusan bahan bakar dan laporan.

Catatan

Kedua tabel silsilah mewakili subset dari semua peristiwa baca/tulis, karena tidak selalu memungkinkan untuk mengambil silsilah data. Rekaman hanya dipancarkan ketika silsilah data dapat disimpulkan.

Tabel silsilah tabel

Tabel sistem silsilah tabel menyertakan rekaman untuk setiap peristiwa baca atau tulis pada tabel atau jalur Katalog Unity. Ini termasuk tetapi tidak terbatas pada eksekusi pekerjaan, eksekusi buku catatan, dan dasbor yang diperbarui dengan peristiwa baca atau tulis.

Jalur tabel: Tabel sistem ini terletak di system.access.table_lineage.

Tabel silsilah kolom

Tabel silsilah kolom tidak menyertakan peristiwa yang tidak memiliki sumber. Misalnya, jika Anda menyisipkan ke dalam kolom menggunakan nilai eksplisit, itu tidak diambil. Jika Anda membaca kolom, kolom akan diambil apakah Anda menulis output atau tidak. Silsilah kolom tidak didukung untuk Tabel Langsung Delta.

Jalur tabel: Tabel sistem ini terletak di system.access.column_lineage.

Skema tabel sistem silsilah data

Tabel sistem silsilah menggunakan skema berikut. Skema silsilah tabel tidak menyertakan source_column_name dan target_column_name.

Nama kolom Jenis data Deskripsi Contoh
account_id string ID akun Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id string ID metastore Katalog Unity. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id string ID ruang kerja 123456789012345
entity_type string Jenis entitas tempat transaksi silsilah diambil. Nilainya adalah NOTEBOOK, , JOB, DASHBOARD_V3 PIPELINE(Dasbor), DBSQL_DASHBOARD (Dasbor warisan), DBSQL_QUERY, ATAU NULL. NOTEBOOK
entity_id string ID entitas tempat transaksi silsilah diambil. Jika entity_type adalah NULL, entity_id adalah NULL. -Kitab: 23098402394234
-Pekerjaan: 23098402394234
- Kueri Databricks SQL: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Dashboard: 01ef070d110715f2b6d3061b8bda89ea
- Dasbor warisan: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Pipa: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id string ID untuk menjelaskan eksekusi unik entitas, atau NULL. Ini berbeda untuk setiap jenis entitas:

- Notebook: command_run_id
- Pekerjaan: job_run_id
- Kueri Databricks SQL: query_run_id
- Dasbor: query_run_id
- Dasbor warisan: query_run_id
- Alur: pipeline_update_id

Jika entity_type adalah NULL, entity_run_id adalah NULL.
-Kitab: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
-Pekerjaan: 51090402394234
- Kueri Databricks SQL: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Dashboard: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
- Dasbor warisan: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
-Pipa: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name string Nama tiga bagian untuk mengidentifikasi tabel sumber. catalog.schema.table
source_table_catalog string Katalog tabel sumber. catalog
source_table_schema string Skema tabel sumber. catalog.schema
source_table_name string Nama tabel sumber. table
source_path string Lokasi di penyimpanan cloud tabel sumber, atau jalur jika dibaca dari penyimpanan cloud secara langsung. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type string Jenis sumber. Nilainya adalah TABLE, , VIEWPATH, atau STREAMING_TABLE. TABLE
source_column_name string Nama kolom sumber. date
target_table_full_name string Nama tiga bagian untuk mengidentifikasi tabel target. catalog.schema.table
target_table_catalog string Katalog tabel target. catalog
target_table_schema string Skema tabel target. catalog.schema
target_table_name string Nama tabel target. table
target_path string Lokasi di penyimpanan cloud tabel target. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type string Jenis target. Nilainya adalah TABLE, , VIEWPATH, atau STREAMING TABLE. TABLE
target_column_name string Nama kolom target. date
created_by string Pengguna yang menghasilkan silsilah data ini. Ini bisa menjadi nama pengguna Azure Databricks, ID perwakilan layanan Azure Databricks, "System-User", atau NULL jika informasi pengguna tidak dapat diambil. crampton.rods@email.com
event_time rentang waktu Tanda waktu ketika silsilah dibuat. Informasi zona waktu dicatat di akhir nilai dengan +00:00 mewakili UTC. 2023-06-20T19:47:21.194+00:00
event_date date Tanggal ketika silsilah dibuat. Ini adalah kolom yang dipartisi. 2023-06-20

Membaca tabel sistem silsilah data

Perhatikan pertimbangan berikut saat menganalisis tabel sistem silsilah data:

  • entity_typeUntuk , Azure Databricks mendukung Tabel Langsung Delta, notebook, pekerjaan, kueri Databricks SQL, dan dasbor. Peristiwa dari entitas lain tidak didukung.
  • Jika Anda melihat entity_type sebagai null, itu berarti tidak ada entitas Azure Databricks yang terlibat dalam peristiwa tersebut. Misalnya, itu bisa menjadi hasil kueri JDBC atau dari pengguna yang mengklik tab Data Sampel di antarmuka pengguna Azure Databricks.
  • Untuk menentukan apakah peristiwa tersebut adalah baca atau tulis, Anda dapat melihat jenis sumber dan jenis target.
    • Baca-saja: Jenis sumber tidak null, tetapi jenis target null.
    • Tulis-saja: Jenis target tidak null, tetapi jenis sumber null.
    • Baca dan tulis: Jenis sumber dan jenis target tidak null.

Contoh tabel sistem silsilah data

Sebagai contoh bagaimana silsilah data direkam dalam tabel sistem, berikut adalah contoh kueri diikuti oleh rekaman silsilah data yang dibuat kueri:

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);

Catatan di system.access.table_lineage akan terlihat seperti:

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

Catatan di system.access.column_lineage akan terlihat seperti:

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

Catatan

Tidak semua kolom silsilah ditampilkan dalam contoh di atas. Untuk skema lengkap, lihat skema silsilah di atas.

Pemecahan masalah kueri tabel eksternal

Saat Anda mereferensikan tabel eksternal menggunakan jalur penyimpanan cloud-nya, rekaman silsilah data terkait hanya menyertakan nama jalur dan bukan nama tabel. Sebagai contoh, rekaman silsilah data untuk kueri ini akan menyertakan nama jalur dan bukan nama tabel:

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

Jika Anda mencoba mengkueri rekaman silsilah data untuk tabel eksternal yang dirujuk menurut jalur, Anda harus memfilter kueri menggunakan source_path atau bukan source_table_full_name atau target_path target_table_full_name. Misalnya, kueri berikut menarik semua rekaman silsilah data untuk tabel eksternal:

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";

Contoh: Mengambil rekaman silsilah berdasarkan nama tabel eksternal

Jika Anda tidak ingin mengambil jalur penyimpanan cloud secara manual untuk menemukan silsilah data, Anda bisa menggunakan fungsi berikut untuk mendapatkan data silsilah data menggunakan nama tabel. Anda juga bisa mengganti system.access.table_lineage dengan system.access.column_lineage dalam fungsi jika Anda ingin mengkueri silsilah kolom.

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)
  )

Kemudian gunakan perintah berikut untuk memanggil fungsi dan menampilkan rekaman silsilah data untuk tabel eksternal:

display(getLineageForTable("table_name"))