Köken sistemi tabloları başvurusu
Önemli
Bu özellik Genel Önizlemededir. Şemanın kataloğunuzda system
görünür olması için etkinleştirilmesi gerekir. Daha fazla bilgi için bkz . Sistem tablosu şemalarını etkinleştirme
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_name
iç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 , , , PIPELINE (Pano), DBSQL_DASHBOARD (Eski pano), DBSQL_QUERY , VEYA NULL şeklindedirNOTEBOOK . DASHBOARD_V3 JOB |
NOTEBOOK |
entity_id |
Dize | Köken işleminin yakalandığı varlığın kimliği. ise entity_type NULL , entity_id şeklindedir NULL . |
*Defter: 23098402394234 *İş: 23098402394234 * Databricks SQL sorgusu: e9cd8a31-de2f-4206-adfa-4f6605d68d88 *Tablo: 01ef070d110715f2b6d3061b8bda89ea * Eski pano: e9cd8a31-de2f-4206-adfa-4f6605d68d88 *Ardışık düzen: e9cd8a31-de2f-4206-adfa-4f6605d68d88 |
entity_run_id |
Dize | Varlığın NULL veya öğ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 * Pano: query_run_id * Eski pano: query_run_id * İşlem hattı: pipeline_update_id ise entity_type NULL , entity_run_id şeklindedir NULL . |
*Defter: e3cr5a10-de6f-6206-fdfa-4f5505d68d55 *İş: 51090402394234 * Databricks SQL sorgusu: e9cd8a31-de2f-4206-adfa-4f6605d68d88 *Tablo: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 * Eski pano: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 *Ardışık düzen: c5am1e0r-on2f-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 , , PATH VIEW veya 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 , , PATH VIEW veya 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ı. Saat dilimi bilgileri değerin sonunda UTC'yi temsil eden şekilde +00:00 kaydedilir. |
2023-06-20T19:47:21.194+00:00 |
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_type
iç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
null
gö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_name
target_table_full_name
veya 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"))