Unity Kataloğu'nu kullanarak veri kökenini yakalama ve görüntüleme
Bu makalede Katalog Gezgini' ni, veri kökeni sistem tablolarını ve REST API' yi kullanarak veri kökenini yakalama ve görselleştirme açıklanmaktadır.
Unity Kataloğu'nu kullanarak Azure Databricks'te çalıştırılacak sorgular arasında çalışma zamanı veri kökenini yakalayabilirsiniz. Köken tüm diller için desteklenir ve sütun düzeyine kadar yakalanır. Köken verileri, sorguyla ilgili not defterlerini, işleri ve panoları içerir. Köken, Katalog Gezgini'nde neredeyse gerçek zamanlı olarak görselleştirilebilir ve köken sistemi tabloları ve Databricks REST API kullanılarak program aracılığıyla alınabilir.
Köken, Unity Kataloğu meta veri deposuna eklenmiş tüm çalışma alanlarında toplanır. Bu, bir çalışma alanında yakalanan kökenin bu meta veri depolarını paylaşan diğer çalışma alanlarında görünür olduğu anlamına gelir. Kullanıcıların köken verilerini görüntülemek için doğru izinlere sahip olması gerekir. Köken verileri 1 yıl boyunca saklanır.
Aşağıdaki görüntü örnek bir köken grafıdır. Belirli veri kökeni işlevleri ve örnekleri bu makalenin devamında ele alınmalıdır.
Makine öğrenmesi modelinin kökenini izleme hakkında bilgi için bkz . Unity Kataloğu'nda modelin veri kökenini izleme.
Gereksinimler
Unity Kataloğu'nu kullanarak veri kökenini yakalamak için aşağıdakiler gereklidir:
Çalışma alanında Unity Kataloğu etkinleştirilmiş olmalıdır.
Tabloların bir Unity Kataloğu meta veri deposuna kaydedilmesi gerekir.
Sorgular, Spark DataFrame (örneğin DataFrame döndüren Spark SQL işlevleri) veya Databricks SQL arabirimlerini kullanmalıdır. Databricks SQL ve PySpark sorguları örnekleri için bkz . Örnekler.
Bir tablonun veya görünümün kökenini görüntülemek için, kullanıcıların en azından
BROWSE
tablonun veya görünümün üst kataloğunda ayrıcalığına sahip olması gerekir. Üst kataloğa çalışma alanından da erişilebilir olmalıdır. Bkz. Katalog erişimini belirli çalışma alanlarıyla sınırlama.Not defterleri, işler veya panolar için köken bilgilerini görüntülemek için, kullanıcıların çalışma alanında erişim denetimi ayarları tarafından tanımlanan bu nesneler üzerinde izinleri olmalıdır. Bkz. Köken izinleri.
Unity Kataloğu özellikli bir işlem hattının kökenini görüntülemek için işlem hattı üzerinde izinlere sahip
CAN_VIEW
olmanız gerekir.Delta tabloları arasındaki akışın köken izlemesi için Databricks Runtime 11.3 LTS veya üzeri gerekir.
Delta Live Tables iş yükleri için sütun kökeni izleme için Databricks Runtime 13.3 LTS veya üzeri gerekir.
Azure Databricks denetim düzlemindeki Event Hubs uç noktasına bağlantı sağlamak için giden güvenlik duvarı kurallarınızı güncelleştirmeniz gerekebilir. Bu durum genellikle Azure Databricks çalışma alanınız kendi sanal ağınızda (sanal ağ ekleme olarak da bilinir) dağıtılırsa geçerlidir. Çalışma alanı bölgenizin Event Hubs uç noktasını almak için bkz . Meta veri deposu, yapıt Blob depolama, sistem tabloları depolama, günlük Blob depolama ve Event Hubs uç noktası IP adresleri. Azure Databricks için kullanıcı tanımlı yolları (UDR) ayarlama hakkında bilgi için bkz. Azure Databricks için kullanıcı tanımlı yol ayarları.
Örnekler
Not
Aşağıdaki örneklerde katalog adı
lineage_data
ve şema adılineagedemo
kullanılır. Farklı bir katalog ve şema kullanmak için örneklerde kullanılan adları değiştirin.Bu örneği tamamlamak için şemada ve
USE SCHEMA
ayrıcalıklarına sahipCREATE
olmanız gerekir. Meta veri deposu yöneticisi, katalog sahibi veya şema sahibi bu ayrıcalıkları verebilir. Örneğin, 'data_engineers' grubundaki tüm kullanıcılara katalogdaki şemadalineagedemo
lineage_data
tablo oluşturma izni vermek için, yukarıdaki ayrıcalıklardan veya rollerden birine sahip bir kullanıcı aşağıdaki sorguları çalıştırabilir:CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
Köken yakalama ve keşfetme
Köken verilerini yakalamak için:
Azure Databricks giriş sayfanıza gidin, kenar çubuğunda Yeni'ye tıklayın ve menüden Not Defteri'ni seçin.
Not defteri için bir ad girin ve Varsayılan Dil'de SQL'i seçin.
Küme'de Unity Kataloğu'na erişimi olan bir küme seçin.
Oluştur’a tıklayın.
İlk not defteri hücresine aşağıdaki sorguları girin:
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
Sorguları çalıştırmak için hücreye tıklayın ve shift+enter tuşlarına basın veya tıklayıp Hücreyi Çalıştır'ı seçin.
Katalog Gezgini'ni kullanarak bu sorgular tarafından oluşturulan kökeni görüntülemek için:
Azure Databricks çalışma alanının üst çubuğundaki Arama kutusunda tabloyu arayın
lineage_data.lineagedemo.dinner
ve seçin.Köken sekmesini seçin. Köken paneli görüntülenir ve ilişkili tabloları görüntüler (bu örnek için tablodur
menu
).Veri kökeninin etkileşimli bir grafiğini görüntülemek için Bkz. Köken Grafiği. Varsayılan olarak, grafikte bir düzey görüntülenir. Kullanılabilir durumdaysa daha fazla bağlantı göstermek için düğümdeki simgeye tıklayın.
Köken bağlantı panelini açmak için, köken grafiğindeki düğümleri bağlayan oka tıklayın. Köken bağlantı panelinde kaynak ve hedef tablolar, not defterleri ve işler de dahil olmak üzere bağlantıyla ilgili ayrıntılar gösterilir.
Tabloyla
dinner
ilişkili not defterini göstermek için, Köken bağlantı panelinde not defterini seçin veya köken grafiğini kapatın ve Not Defterleri'ne tıklayın. Not defterini yeni bir sekmede açmak için not defteri adına tıklayın.Sütun düzeyinde kökeni görüntülemek için, ilgili sütunların bağlantılarını göstermek için grafikte bir sütuna tıklayın. Örneğin, 'full_menu' sütununa tıklanması, sütunun türetildiği yukarı akış sütunlarını gösterir:
Kökenleri farklı bir dil kullanarak görüntülemek için, örneğin Python:
Daha önce oluşturduğunuz not defterini açın, yeni bir hücre oluşturun ve aşağıdaki Python kodunu girin:
%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")
Hücreye tıklayıp shift+enter tuşlarına basarak veya tıklayıp Hücreyi Çalıştır'ı seçerek hücreyi çalıştırın.
Azure Databricks çalışma alanının üst çubuğundaki Arama kutusunda tabloyu arayın
lineage_data.lineagedemo.price
ve seçin.Köken sekmesine gidin ve Köken Grafını Gör'e tıklayın. Sorgular tarafından oluşturulan veri kökenini keşfetmek için simgelere tıklayın.
Köken bağlantı panelini açmak için, köken grafiğindeki düğümleri bağlayan oka tıklayın. Köken bağlantı panelinde kaynak ve hedef tablolar, not defterleri ve işler de dahil olmak üzere bağlantıyla ilgili ayrıntılar gösterilir.
İş akışı kökenini yakalama ve görüntüleme
Köken, Unity Kataloğu'nu okuyan veya yazan tüm iş akışları için de yakalanır. Azure Databricks iş akışının kökenini görüntülemek için:
Kenar çubuğunda Yeni'ye tıklayın ve menüden Not Defteri'ni seçin.
Not defteri için bir ad girin ve Varsayılan Dil'de SQL'i seçin.
Oluştur’a tıklayın.
İlk not defteri hücresine aşağıdaki sorguyu girin:
SELECT * FROM lineage_data.lineagedemo.menu
Üst çubukta Zamanla'ya tıklayın. Zamanlama iletişim kutusunda El ile'yi seçin, Unity Kataloğu'na erişimi olan bir küme seçin ve Oluştur'a tıklayın.
Şimdi çalıştır üzerine tıklayın.
Azure Databricks çalışma alanının üst çubuğundaki Arama kutusunda tabloyu arayın
lineage_data.lineagedemo.menu
ve seçin.Köken sekmesinde İş Akışları'na tıklayın ve Aşağı Akış sekmesini seçin. İş adı, İş Adı'nın altında tablonun tüketicisi
menu
olarak görünür.
Pano kökenini yakalama ve görüntüleme
Pano oluşturmak ve veri kökenini görüntülemek için:
Azure Databricks giriş sayfanıza gidin ve kenar çubuğunda Katalog'a tıklayarak Katalog Gezgini'ni açın.
Katalog adına tıklayın, lineagedemo öğesine tıklayın ve tabloyu seçin
menu
. Tabloyu aramak içinmenu
üst çubuktaki Arama kutusunu da kullanabilirsiniz.Panoda Aç'a tıklayın.
Panoya eklemek istediğiniz sütunları seçin ve Oluştur'a tıklayın.
Panoyu yayımlayın.
Veri kökeninde yalnızca yayımlanan panolar izlenir.
Üst çubuktaki Ara kutusunda tabloyu arayın
lineage_data.lineagedemo.menu
ve seçin.Köken sekmesinde Panolar'a tıklayın. Pano, Pano Adı altında menü tablosunun tüketicisi olarak görüntülenir.
Köken izinleri
Köken grafikleri Unity Kataloğu ile aynı izin modelini paylaşır. Bir kullanıcının BROWSE
tabloda veya SELECT
ayrıcalığı yoksa, kökeni keşfedemez. Ayrıca kullanıcılar yalnızca görüntüleme iznine sahip oldukları not defterlerini, işleri ve panoları görebilir. Örneğin, yönetici olmayan bir kullanıcı userA
için aşağıdaki komutları çalıştırırsanız:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
Tablo için köken grafiğini görüntülediğindeuserA
, tabloyu görürlermenu
.lineage_data.lineagedemo.menu
Aşağı akış lineage_data.lineagedemo.dinner
tablosu gibi ilişkili tablolar hakkındaki bilgileri göremezler. Tablodinner
, için görüntüde userA
bir masked
düğüm olarak görüntülenir ve userA
erişim izni olmayan tablolardan aşağı akış tablolarını ortaya çıkarmak için grafiği genişletemez.
Yönetici olmayan bir kullanıcıya userB
izin vermek için BROWSE
aşağıdaki komutu çalıştırırsanız:
GRANT BROWSE on lineage_data to `userA@company.com`;
userB
artık şemadaki herhangi bir tablonun köken grafiğini lineage_data
görüntüleyebilir.
Unity Kataloğu'nda güvenliği sağlanabilir nesnelere erişimi yönetme hakkında daha fazla bilgi için bkz . Unity Kataloğu'nda ayrıcalıkları yönetme. Not defterleri, işler ve panolar gibi çalışma alanı nesnelerine erişimi yönetme hakkında daha fazla bilgi için bkz . Erişim denetim listeleri.
Köken verilerini silme
Uyarı
Aşağıdaki yönergeler Unity Kataloğu'nda depolanan tüm nesneleri siler. Bu yönergeleri yalnızca gerekirse kullanın. Örneğin, uyumluluk gereksinimlerini karşılamak için.
Köken verilerini silmek için Unity Kataloğu nesnelerini yöneten meta depoyu silmeniz gerekir. Meta depoyu silme hakkında daha fazla bilgi için bkz . Meta veri depolarını silme. Veriler 90 gün içinde silinir.
Sistem tablolarını kullanarak köken verilerini sorgulama
Köken verilerini program aracılığıyla sorgulamak için köken sistemi tablolarını kullanabilirsiniz. Ayrıntılı yönergeler için bkz . Sistem tablolarıyla kullanımı izleme ve Köken sistem tabloları başvurusu.
Çalışma alanınız köken sistemi tablolarını desteklemeyen bir bölgedeyse, alternatif olarak köken verilerini program aracılığıyla almak için Veri Kökeni REST API'sini kullanabilirsiniz.
Veri Kökeni REST API'sini kullanarak köken alma
Veri kökeni API'si tablo ve sütun kökenini almanıza olanak tanır. Ancak, çalışma alanınız köken sistemi tablolarını destekleyen bir bölgedeyse REST API yerine sistem tablosu sorgularını kullanmanız gerekir. Sistem tabloları, köken verilerini program aracılığıyla almak için daha iyi bir seçenektir. Çoğu bölge, köken sistemi tablolarını destekler.
Önemli
Databricks REST API’lerine erişmek için kimlik doğrulaması yapmanız gerekir.
Tablo kökenini alma
Bu örnek, tablo için dinner
köken verilerini alır.
İstek
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}'
değerini değiştirin <workspace-instance>
.
Bu örnekte bir .netrc dosyası kullanılır.
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
}
]
}
]
}
Sütun kökenini alma
Bu örnek, tablonun sütun verilerini dinner
alır.
İstek
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"}'
değerini değiştirin <workspace-instance>
.
Bu örnekte bir .netrc dosyası kullanılır.
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"
}
]
}
Sınırlamalar
- Köken bir yıllık bir sıralı pencerede hesaplandığından, bir yıldan daha önce toplanan köken görüntülenmez. Örneğin, bir iş veya sorgu A tablosundaki verileri okur ve B tablosuna yazarsa, A tablosu ile B tablosu arasındaki bağlantı yalnızca bir yıl boyunca görüntülenir. Bir yıllık süre içinde köken verilerini zaman çerçevesine göre filtreleyebilirsiniz.
- İşler API'sinin
runs submit
isteğini kullanan işler, köken görüntülenirken kullanılamaz. İstek kullanılırkenruns submit
tablo ve sütun düzeyi kökeni hala yakalanır, ancak çalıştırma bağlantısı yakalanmaz. - Unity Kataloğu sütun düzeyinde veri kökenini mümkün olduğunca yakalar. Bununla birlikte bazı durumlarda sütun düzeyinde veri kökeni yakalanamaz.
- Sütun kökeni yalnızca hem kaynak hem de hedefe tablo adıyla başvurulduğunda desteklenir (Örnek:
select * from <catalog>.<schema>.<table>
). Kaynak veya hedef yola göre ele alınırsa sütun kökeni yakalanamaz (Örnek:select * from delta."s3://<bucket>/<path>"
). - Bir tablo veya görünüm yeniden adlandırılırsa, yeniden adlandırılan tablo veya görünüm için köken yakalanmaz.
- Şema veya katalog yeniden adlandırılırsa, yeniden adlandırılan katalog veya şema altındaki tablolar ve görünümler için köken yakalanmaz.
- Spark SQL veri kümesi denetim noktası oluşturma kullanıyorsanız köken yakalanmaz.
- Unity Kataloğu çoğu durumda Delta Live Tabloları veri hatlarından kökeni yakalar. Ancak bazı durumlarda, işlem hatlarının DEĞIŞIKLIKLERI UYGULA API'sini veya GEÇİCİ tabloları kullanması gibi eksiksiz köken kapsamı garanti edilemez.
- Köken, Stack işlevlerini yakalamaz.
- Genel geçici görünümler köken içinde yakalanmaz.
- altındaki
system.information_schema
tablolar köken içinde yakalanmaz.