Aracılığıyla paylaş


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.

Kökenlere genel bakış

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ı 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 lineagedemo 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:

  1. Azure Databricks giriş sayfanıza gidin, kenar çubuğunda Yeni'ye tıklayın Yeni Simge ve 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:

  1. Azure Databricks çalışma alanının üst çubuğundaki Arama kutusunda tabloyu arayın lineage_data.lineagedemo.dinner ve seçin.

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

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

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

    Köken grafiği

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

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

    Tam menü sütun kökeni

Kökenleri farklı bir dil kullanarak görüntülemek için, örneğin Python:

  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 kutusunda tabloyu arayın lineage_data.lineagedemo.price ve seçin.

  4. Köken sekmesine gidin ve Köken Grafını Gör'e tıklayın. Sorgular Artı İşareti Simgesi tarafından oluşturulan veri kökenini keşfetmek için simgelere tıklayın.

    Genişletilmiş köken grafiği

  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ş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:

  1. Kenar çubuğunda Yeni'ye tıklayın Yeni Simge ve 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 kutusunda tabloyu arayın lineage_data.lineagedemo.menu ve seçin.

  8. 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:

  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 Arama kutusunu da kullanabilirsiniz.

  3. Panoda Aç'a tıklayın.

  4. Panoya eklemek istediğiniz sütunları seçin ve Oluştur'a tıklayın.

  5. Panoyu yayımlayın.

    Veri kökeninde yalnızca yayımlanan panolar izlenir.

  6. Üst çubuktaki Ara kutusunda tabloyu arayın lineage_data.lineagedemo.menu ve seçin.

  7. 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ı 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ş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ı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>").
  • 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.