Share via


Köken sistemi tabloları başvurusu

Önemli

Bu özellik Genel Önizlemededir.

Bu makalede, iki köken sistemi tablosuna genel bir bakış sağlanır. Bu sistem tabloları Unity Kataloğu'nun veri kökeni özelliğini kullanarak veri kökeni verilerini programlama yoluyla sorgulamanıza olanak tanıyarak karar alma sürecini ve raporları destekler.

İki köken sistemi tablosu vardır:

  • system.access.table_lineage
  • system.access.column_lineage

Not

Kökenleri yakalamak her zaman mümkün olmadığından, her iki köken tablosu da tüm okuma/yazma olaylarının bir alt kümesini temsil eder. Kayıtlar yalnızca köken çıkarılabildiğinde gönderilir.

Tablo kökeni tablosu

Tablo kökeni sistem tablosu, Unity Kataloğu tablosunda veya yolundaki her okuma veya yazma olayı için bir kayıt içerir. Buna iş çalıştırmaları, not defteri çalıştırmaları ve okuma veya yazma olayıyla güncelleştirilen panolar dahildir ancak bunlarla sınırlı değildir.

Sütun kökeni tablosu

Sütun kökeni tablosu, kaynağı olmayan olayları içermez. Örneğin, açık değerler kullanarak bir sütuna eklerseniz, yakalanmaz. Bir sütunu okursanız, çıktıyı siz yazsanız da yazmasanız da yakalanır. Delta Live Tables için sütun kökeni desteklenmez.

Köken sistemi tablo şeması

Köken sistemi tabloları aşağıdaki şemayı kullanır. Tablo kökeni şeması source_column_name ve target_column_nameiçermez.

Sütun adı Veri türü Açıklama Örnek
account_id Dize Azure Databricks hesabının kimliği. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id Dize Unity Kataloğu meta veri deposunun kimliği. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id Dize Çalışma alanının kimliği 123456789012345
entity_type Dize Köken işleminin yakalandığı varlık türü. Değeri , , JOB, PIPELINE, DBSQL_DASHBOARD, , DBSQL_QUERYVEYA NULLşeklindedirNOTEBOOK. NOTEBOOK
entity_id Dize Köken işleminin yakalandığı varlığın kimliği. ise entity_typeNULL, entity_id şeklindedir NULL. *Dizüstü: 23098402394234
*Iş: 23098402394234
* Databricks SQL sorgusu: e9cd8a31-de2f-4206-adfa-4f6605d68d88
* Databricks SQL panosu: e9cd8a31-de2f-4206-adfa-4f6605d68d88
*Boru hattı: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id Dize Varlığın NULLveya öğesinin benzersiz çalıştırmasını açıklayan kimlik. Bu, her varlık türü için farklılık gösterir:

* Not Defteri: command_run_id
* İş: job_run_id
* Databricks SQL sorgusu: query_run_id
* Databricks SQL panosu: query_run_id
* İşlem hattı: pipeline_update_id

ise entity_typeNULL, entity_run_id şeklindedir NULL.
*Dizüstü: 23098402394234
*Iş: 23098402394234
* Databricks SQL sorgusu: e9cd8a31-de2f-4206-adfa-4f6605d68d88
* Databricks SQL panosu: e9cd8a31-de2f-4206-adfa-4f6605d68d88
*Boru hattı: e9cd8a31-de2f-4206-adfa-4f6605d68d88
source_table_full_name Dize Kaynak tabloyu tanımlamak için üç bölümlü ad. catalog.schema.table
source_table_catalog Dize Kaynak tablonun kataloğu. catalog
source_table_schema Dize Kaynak tablonun şeması. catalog.schema
source_table_name Dize Kaynak tablonun adı. table
source_path Dize Kaynak tablonun bulut depolamasında konum veya doğrudan bulut depolamadan okuyorsa yol. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type Dize Kaynağın türü. Değeri , , PATHVIEWveya STREAMING_TABLEşeklindedirTABLE. TABLE
source_column_name Dize Kaynak sütunun adı. date
target_table_full_name Dize Hedef tabloyu tanımlamak için üç parçalı ad. catalog.schema.table
target_table_catalog Dize Hedef tablonun kataloğu. catalog
target_table_schema Dize Hedef tablonun şeması. catalog.schema
target_table_name Dize Hedef tablonun adı. table
target_path Dize Hedef tablonun bulut depolama alanında konum. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type Dize Hedefin türü. Değer , , PATHVIEWveya STREAMING TABLEşeklindedirTABLE. TABLE
target_column_name Dize Hedef sütunun adı. date
created_by Dize Bu kökeni oluşturan kullanıcı. Bu bir Azure Databricks kullanıcı adı, Azure Databricks hizmet sorumlusu kimliği, "Sistem-Kullanıcı" veya NULL kullanıcı bilgileri yakalanamıyor olabilir. crampton.rods@email.com
event_time timestamp Kökenin oluşturulduğu zaman damgası. 2023-06-20T19:47:21.194+0000
event_date tarih Kökenin oluşturulduğu tarih. Bu bölümlenmiş bir sütundur. 2023-06-20

Köken sistemi tablolarını okuma

Köken sistemi tablolarını analiz ederken aşağıdaki noktalara dikkat edin:

  • entity_typeiçin Azure Databricks Delta Live Tablolarını, not defterlerini, işleri, Databricks SQL sorgularını ve panoları destekler. Diğer varlıklardan gelen olaylar desteklenmez.
  • olarak nullgörüyorsanızentity_type, olaya hiçbir Azure Databricks varlığı dahil değildir. Örneğin, bir JDBC sorgusunun veya bir kullanıcının Azure Databricks kullanıcı arabirimindeki Örnek Veri sekmesine tıklamasının sonucu olabilir.
  • Olayın okuma mı yoksa yazma mı olduğunu belirlemek için kaynak türünü ve hedef türü görüntüleyebilirsiniz.
    • Salt okunur: Kaynak türü null değil, hedef tür null.
    • Yalnızca yazma: Hedef tür null değil, ancak kaynak türü null.
    • Okuma ve yazma: Kaynak türü ve hedef türü null değil.

Köken sistemi tablo örneği

Kökenlerin sistem tablolarında nasıl kaydedildiğiyle ilgili bir örnek olarak, aşağıda örnek bir sorgu ve ardından sorgunun oluşturduğu köken kayıtları verilmiştir:

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

içindeki system.access.table_lineage kayıt şöyle görünür:

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

içindeki system.access.column_lineage kayıt şöyle görünür:

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

Not

Yukarıdaki örnekte tüm köken sütunları gösterilmez. Tam şema için yukarıdaki köken şemasına bakın.

Dış tablo sorgularının sorunlarını giderme

Bulut depolama yolunu kullanarak bir dış tabloya başvurdığınızda, ilişkili köken kaydı tablo adını değil yalnızca yol adını içerir. Örneğin, bu sorgunun köken kaydı tablo adını değil yol adını içerir:

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

Yola göre başvuruda bulunan bir dış tablo için köken kayıtlarını sorgulamaya çalışıyorsanız, veya yerine source_table_full_nametarget_table_full_nameveya target_path kullanarak source_path sorguyu filtrelemeniz gerekir. Örneğin, aşağıdaki sorgu bir dış tablonun tüm köken kayıtlarını çeker:

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

Örnek: Dış tablo adına göre köken kayıtlarını alma

Kökeni bulmak için bulut depolama yolunu el ile almak istemiyorsanız, tablo adını kullanarak köken verilerini almak için aşağıdaki işlevi kullanabilirsiniz. Sütun kökenini sorgulamak istiyorsanız işlevini ile system.access.column_lineage de değiştirebilirsinizsystem.access.table_lineage.

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

Ardından işlevi çağırmak ve dış tablonun köken kayıtlarını görüntülemek için aşağıdaki komutu kullanın:

display(getLineageForTable("table_name"))