Share via


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ş akışlarını 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.

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ığı olmalıdır.

  • Kullanıcılar; not defterlerinin, iş akışlarının veya panoların köken bilgilerini görüntülemek için çalışma alanında erişim denetimi ayarlarıyla tanımlanan bu nesneler üzerinde izinlere sahip 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.

  • Azure Databricks kontrol düzlemindeki Olay Hub'ı 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 Olay Hub'ı uç noktasını almak için bkz. Meta veri deposu, yapı Blob depolama, sistem tabloları depolama, günlük Blob depolama ve Olay Hub'ı 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ı.

Sınırlamalar

  • Delta tabloları arasındaki akış yalnızca Databricks Runtime 11.3 veya sonraki sürümlerinde desteklenir.

  • Köken 1 yıllık hareketli zaman penceresinde hesaplandığından, 1 yıldan daha önce toplanan köken görüntülenmez. Örneğin bir iş veya sorgu A tablosundan verileri okur ve B tablosuna yazarsa, A tablosu ile B tablosu arasındaki bağlantı yalnızca 1 yıl boyunca görüntülenir.

    Köken verilerini zaman dilimine göre filtreleyebilirsiniz. "Tüm köken" seçildiğinde, Haziran 2023'te toplanan köken verileri görüntülenir.

  • İşler API'sini runs submit kullanan iş akışları, köken görüntülenirken kullanılamaz. İstek kullanılırken runs 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>").

  • Tablo yeniden adlandırılırsa, yeniden adlandırılan tablo için veri kökeni yakalanmaz.

  • Spark SQL veri kümesi denetim noktası oluşturma kullanıyorsanız köken yakalanmaz. Apache Spark belgelerinde pyspark.sql.DataFrame.checkpoint bölümüne bakın.

  • 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.

Örnekler

Not

  • Aşağıdaki örneklerde katalog adı lineage_data ve şema adı lineagedemokullanı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 sahip CREATE 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 şemada lineagedemolineage_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 aşağıdaki adımları kullanın:

  1. Azure Databricks giriş sayfanıza gidin, kenar çubuğunda Yeni'ye tıklayın Yeni Simgeve menüden Not Defteri'ni seçin.

  2. Not defteri için bir ad girin ve Varsayılan Dil'de SQL'i seçin.

  3. Küme'de Unity Kataloğu'na erişimi olan bir küme seçin.

  4. Oluştur’a tıklayın.

  5. İ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
    
  6. Sorguları çalıştırmak için hücreye tıklayın ve shift+enter tuşlarına basın veya tıklayıp Çalıştır Menüsü 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 aşağıdaki adımları kullanın:

  1. Azure Databricks çalışma alanının üst çubuğundaki Arama kutusuna Girin lineage_data.lineagedemo.dinner ve Databricks'te Lineage_data.lineagedemo.dinner dosyasını ara'ya tıklayın.

  2. Tablolar'ın altında tabloya dinner tıklayın.

  3. Köken sekmesini seçin. Köken paneli görüntülenir ve ilişkili tabloları görüntüler (bu örnek için tablodurmenu).

  4. 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. Varsa daha fazla bağlantı göstermek için düğümdeki simgeye tıklayabilirsiniz Artı İşareti Simgesi .

  5. 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ş akışları gibi bağlantıyla ilgili ayrıntılar gösterilir.

    Köken grafiği

  6. 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.

  7. Sütun düzeyi kökeni görüntülemek için, ilgili sütunların bağlantılarını göstermek için grafikteki 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:

    Tam menü sütun kökeni

Python gibi farklı bir dille köken oluşturmayı ve görüntülemeyi göstermek için aşağıdaki adımları kullanın:

  1. 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")
    
  2. Hücreye tıklayıp shift+enter tuşlarına basarak veya tıklayıp Çalıştır Menüsü Hücreyi Çalıştır'ı seçerek hücreyi çalıştırın.

  3. Azure Databricks çalışma alanının üst çubuğundaki Arama kutusuna Girin lineage_data.lineagedemo.price ve Databricks'te lineage_data.lineagedemo.price ara'ya tıklayın.

  4. Tablolar'ın altında tabloya price tıklayın.

  5. Köken sekmesini seçin ve Köken Grafını Gör'e tıklayın. Artı İşareti Simgesi SQL ve Python sorguları tarafından oluşturulan veri kökenini keşfetmek için simgelere tıklayın.

    Genişletilmiş köken grafiği

  6. 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ş akışları gibi 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ülemeyi göstermek için aşağıdaki adımları kullanın:

  1. Kenar çubuğunda Yeni'ye tıklayın Yeni Simgeve menüden Not Defteri'ni seçin.

  2. Not defteri için bir ad girin ve Varsayılan Dil'de SQL'i seçin.

  3. Oluştur’a tıklayın.

  4. İlk not defteri hücresine aşağıdaki sorguyu girin:

    SELECT * FROM lineage_data.lineagedemo.menu
    
  5. Ü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.

  6. Şimdi çalıştır üzerine tıklayın.

  7. Azure Databricks çalışma alanının üst çubuğundaki Arama kutusuna Girin lineage_data.lineagedemo.menu ve Databricks'te Ara lineage_data.lineagedemo.menu öğesine tıklayın.

  8. Tablolar Tüm tabloları görüntüle'nin altında tabloya menu tıklayın.

  9. Köken sekmesini seçin, İş 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

SQL panosunun kökenini görüntülemeyi göstermek için aşağıdaki adımları kullanın:

  1. Azure Databricks giriş sayfanıza gidin ve kenar çubuğunda Katalog'a tıklayarak Katalog Gezgini'ni açın.
  2. Katalog adına tıklayın, lineagedemo öğesine tıklayın ve tabloyu seçinmenu. Tabloyu aramak için menu üst çubuktaki Tablo ara metin kutusunu da kullanabilirsiniz.
  3. Eylemler > Hızlı pano oluştur'a tıklayın.
  4. Panoya eklenecek sütunları seçin ve Oluştur'a tıklayın.
  5. Azure Databricks çalışma alanının üst çubuğundaki Arama kutusuna Girin lineage_data.lineagedemo.menu ve Databricks'te Ara lineage_data.lineagedemo.menu öğesine tıklayın.
  6. Tablolar Tüm tabloları görüntüle'nin altında tabloya menu tıklayın.
  7. Köken sekmesini seçin ve Panolar'a tıklayın. Pano adı, Pano Adı altında menü tablosunun tüketicisi olarak görünür.

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ş akışlarını ve panoları görebilir. Örneğin, yönetici olmayan bir kullanıcı userAiç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 userAbir 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 userBizin 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ş akışları 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.

Yanıtla

{
  "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"
    }
  ]
}