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 , , VIEW PATH , 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 , , VIEW PATH , 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_type
Untuk , Azure Databricks mendukung Tabel Langsung Delta, notebook, pekerjaan, kueri Databricks SQL, dan dasbor. Peristiwa dari entitas lain tidak didukung.- Jika Anda melihat
entity_type
sebagainull
, 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"))