Bagikan melalui


Mengambil dan melihat silsilah data menggunakan Katalog Unity

Artikel ini menjelaskan cara mengambil dan memvisualisasikan silsilah data menggunakan Catalog Explorer, tabel sistem silsilah data, dan REST API.

Anda dapat menggunakan Unity Catalog untuk mengambil silsilah data runtime di seluruh kueri yang dijalankan di Azure Databricks. Silsilah data didukung untuk semua bahasa dan diambil ke tingkat kolom. Data silsilah data mencakup buku catatan, alur kerja, dan dasbor yang terkait dengan kueri. Silsilah data dapat divisualisasikan di Catalog Explorer hampir secara real time dan diambil secara terprogram menggunakan tabel sistem silsilah data dan Databricks REST API.

Silsilah data dikumpulkan di semua ruang kerja yang dilampirkan ke metastore Katalog Unity. Ini berarti bahwa silsilah data yang diambil dalam satu ruang kerja terlihat di berbagi ruang kerja lain yang metastore. Pengguna harus memiliki izin yang benar untuk melihat data silsilah data. Data silsilah disimpan selama 1 tahun.

Untuk informasi tentang melacak silsilah model pembelajaran mesin, lihat Melacak silsilah data model di Katalog Unity.

Persyaratan

Berikut ini diperlukan untuk mengambil silsilah data menggunakan Katalog Unity:

  • Ruang kerja harus mengaktifkan Katalog Unity.

  • Tabel harus didaftarkan dalam metastore Katalog Unity.

  • Kueri harus menggunakan Spark DataFrame (misalnya, fungsi Spark SQL yang mengembalikan antarmuka DataFrame) atau Databricks SQL. Untuk contoh kueri Databricks SQL dan PySpark, lihat Contoh.

  • Untuk melihat silsilah tabel atau tampilan, pengguna harus memiliki setidaknya BROWSE hak istimewa pada katalog induk tabel atau tampilan.

  • Untuk menampilkan informasi silsilah data untuk buku catatan, alur kerja, atau dasbor, pengguna harus memiliki izin pada objek ini seperti yang ditentukan oleh pengaturan kontrol akses di ruang kerja. Lihat Izin silsilah data.

  • Untuk melihat silsilah untuk alur yang diaktifkan Katalog Unity, Anda harus memiliki CAN_VIEW izin pada alur.

  • Anda mungkin perlu memperbarui aturan firewall keluar untuk memungkinkan konektivitas ke titik akhir Pusat Aktivitas di sarana kontrol Azure Databricks. Biasanya ini berlaku jika ruang kerja Azure Databricks Anda disebarkan di VNet Anda sendiri (juga dikenal sebagai injeksi VNet). Untuk mendapatkan titik akhir Pusat Aktivitas untuk wilayah ruang kerja Anda, lihat Metastore, penyimpanan Blob artefak, penyimpanan tabel sistem, penyimpanan Blob log, dan alamat IP titik akhir Pusat Aktivitas. Untuk informasi tentang menyiapkan rute yang ditentukan pengguna (UDR) untuk Azure Databricks, lihat Pengaturan rute yang ditentukan pengguna untuk Azure Databricks.

Batasan

  • Streaming antar tabel Delta hanya didukung di Databricks Runtime 11.3 LTS atau lebih tinggi.

  • Karena silsilah data dihitung pada jendela bergulir 1 tahun, silsilah data yang dikumpulkan lebih dari 1 tahun yang lalu tidak ditampilkan. Misalnya, jika pekerjaan atau kueri membaca data dari tabel A dan menulis ke tabel B, tautan antara tabel A dan tabel B ditampilkan hanya selama 1 tahun.

    Anda dapat memfilter data silsilah berdasarkan jangka waktu. Ketika "Semua silsilah" dipilih, data silsilah data yang dikumpulkan mulai Juni 2023 ditampilkan.

  • Alur kerja yang menggunakan permintaan JOBS API runs submit tidak tersedia saat melihat silsilah data. Silsilah tabel dan tingkat kolom masih diambil saat menggunakan runs submit permintaan, tetapi tautan ke eksekusi tidak diambil.

  • Unity Catalog mengambil silsilah data ke tingkat kolom sebanyak mungkin. Namun, dalam beberapa kasus, silsilah data tingkat kolom tidak dapat diambil.

  • Silsilah kolom hanya didukung ketika sumber dan target dirujuk oleh nama tabel (Contoh: select * from <catalog>.<schema>.<table>). Silsilah kolom tidak dapat diambil jika sumber atau target ditangani berdasarkan jalur (Contoh: select * from delta."s3://<bucket>/<path>").

  • Jika nama tabel diganti, silsilah data tidak diambil untuk tabel tersebut.

  • Jika Anda menggunakan titik pemeriksaan himpunan data Spark SQL, silsilah data tidak diambil. Lihat pyspark.sql.DataFrame.checkpoint dalam dokumentasi Apache Spark.

  • Katalog Unity mengambil silsilah data dari alur Tabel Langsung Delta dalam banyak kasus. Namun, dalam beberapa instans, cakupan silsilah lengkap tidak dapat dijamin, seperti ketika alur menggunakan TABEL APPLY CHANGES API atau TEMPORARY.

Contoh

Catatan

  • Contoh berikut menggunakan nama katalog dan nama lineage_datalineagedemoskema . Untuk menggunakan katalog dan skema yang berbeda, ubah nama yang digunakan dalam contoh.

  • Untuk menyelesaikan contoh ini, Anda harus memiliki CREATE hak istimewa dan USE SCHEMA pada skema. Admin metastore, pemilik katalog, atau pemilik skema dapat memberikan hak istimewa ini. Misalnya, untuk memberi semua pengguna dalam grup izin 'data_engineers' untuk membuat tabel dalam lineagedemo skema dalam lineage_data katalog, pengguna dengan salah satu hak istimewa atau peran di atas dapat menjalankan kueri berikut:

    CREATE SCHEMA lineage_data.lineagedemo;
    GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
    

Mengambil dan menjelajahi silsilah data

Untuk mengambil data silsilah data, gunakan langkah-langkah berikut:

  1. Buka halaman arahan Azure Databricks Anda, klik Ikon BaruBaru di bar samping, dan pilih Buku Catatan dari menu.

  2. Masukkan nama untuk buku catatan dan pilih SQL dalam Bahasa Default.

  3. Di Kluster, pilih kluster dengan akses ke Unity Catalog.

  4. Klik Buat.

  5. Di sel buku catatan pertama, masukkan kueri berikut ini:

    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. Untuk menjalankan kueri, klik di sel dan tekan shift+enter atau klik Menu Jalankan dan pilih Jalankan Sel.

Untuk menggunakan Catalog Explorer untuk melihat silsilah data yang dihasilkan oleh kueri ini, gunakan langkah-langkah berikut:

  1. Dalam kotak Pencarian di bilah atas ruang kerja Azure Databricks, masukkan lineage_data.lineagedemo.dinner dan klik Cari lineage_data.lineagedemo.dinner di Databricks.

  2. Di bawah Tabel, klik dinner tabel.

  3. Pilih tab Silsilah data. Panel silsilah muncul dan menampilkan tabel terkait (untuk contoh ini adalah menu tabel).

  4. Untuk melihat grafik interaktif silsilah data, klik Lihat Grafik Silsilah Data. Secara default, satu tingkat ditampilkan dalam grafik. Anda dapat mengklik Ikon Tanda Plus ikon pada simpul untuk mengungkapkan lebih banyak koneksi jika tersedia.

  5. Klik panah yang menghubungkan simpul di grafik silsilah untuk membuka panel koneksi Silsilah. Panel Koneksi silsilah menampilkan detail tentang koneksi, termasuk tabel sumber dan target, buku catatan, dan alur kerja.

    Grafik silsilah data

  6. Untuk memperlihatkan buku catatan yang terkait dengan dinner tabel, pilih buku catatan di panel Koneksi silsilah atau tutup grafik silsilah data dan klik Buku Catatan. Untuk membuka buku catatan di tab baru, klik nama buku catatan.

  7. Untuk menampilkan silsilah data tingkat kolom, klik kolom dalam grafik untuk memperlihatkan tautan ke kolom terkait. Misalnya, mengklik kolom 'full_menu' memperlihatkan kolom upstram tempat kolom berasal dari:

    Silsilah kolom menu lengkap

Untuk menunjukkan pembuatan dan tampilan silsilah data dengan bahasa yang berbeda, misalnya, Python, gunakan langkah-langkah berikut:

  1. Buka buku catatan yang Anda buat sebelumnya, buat sel baru, dan masukkan kode Python berikut ini:

    %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. Jalankan sel dengan mengklik sel dan tekan shift+enter atau klik Menu Jalankan dan pilih Jalankan Sel.

  3. Dalam kotak Pencarian di bilah atas ruang kerja Azure Databricks, masukkan lineage_data.lineagedemo.price dan klik Cari lineage_data.lineagedemo.price di Databricks.

  4. Di bawah Tabel, klik price tabel.

  5. Pilih tab Silsilah data dan klik Lihat Grafik Silsilah Data. Ikon Tanda Plus Klik ikon untuk menjelajahi silsilah data yang dihasilkan oleh kueri SQL dan Python.

    Grafik silsilah yang diperluas

  6. Klik panah yang menghubungkan simpul di grafik silsilah untuk membuka panel koneksi Silsilah. Panel Koneksi silsilah menampilkan detail tentang koneksi, termasuk tabel sumber dan target, buku catatan, dan alur kerja.

Mengambil dan melihat silsilah alur kerja

Silsilah data juga diambil untuk alur kerja apa pun yang membaca atau menulis ke Katalog Unity. Untuk menunjukkan menampilkan silsilah untuk alur kerja Azure Databricks, gunakan langkah-langkah berikut:

  1. Klik Ikon BaruBaru di bar samping dan pilih Notebook dari menu.

  2. Masukkan nama untuk buku catatan dan pilih SQL dalam Bahasa Default.

  3. Klik Buat.

  4. Di sel buku catatan pertama, masukkan kueri berikut ini:

    SELECT * FROM lineage_data.lineagedemo.menu
    
  5. Klik Jadwalkan di bilah atas. Dalam dialog jadwal, pilih Manual, pilih kluster dengan akses ke Unity Catalog, dan klik Buat.

  6. Klik Jalankan sekarang.

  7. Dalam kotak Pencarian di bilah atas ruang kerja Azure Databricks, masukkan lineage_data.lineagedemo.menu dan klik Cari lineage_data.lineagedemo.menu di Databricks.

  8. Di bawah Tabel Tampilkan semua tabel, klik menu tabel.

  9. Pilih tab Silsilah Data, klik Alur Kerja, dan pilih tab Hilir. Nama pekerjaan muncul di bawah Nama Pekerjaan sebagai konsumen menu tabel.

Mengambil dan melihat silsilah dasbor

Untuk menunjukkan menampilkan silsilah data untuk dasbor SQL, gunakan langkah-langkah berikut:

  1. Buka halaman arahan Azure Databricks Anda dan buka Catalog Explorer dengan mengklik Katalog di bar samping.
  2. Klik nama katalog, klik lineagedemo, dan pilih menu tabel. Anda juga bisa menggunakan kotak teks Cari tabel di bilah atas untuk menu mencari tabel.
  3. Klik Tindakan Buat dasbor >cepat.
  4. Pilih kolom untuk ditambahkan ke dasbor dan klik Buat.
  5. Dalam kotak Pencarian di bilah atas ruang kerja Azure Databricks, masukkan lineage_data.lineagedemo.menu dan klik Cari lineage_data.lineagedemo.menu di Databricks.
  6. Di bawah Tabel Tampilkan semua tabel, klik menu tabel.
  7. Pilih tab Silsilah data dan klik Dasbor. Nama dasbor muncul di bawah Nama Dasbor sebagai konsumen tabel menu.

Izin silsilah data

Grafik silsilah data berbagi model izin yang sama dengan Katalog Unity. Jika pengguna tidak memiliki BROWSE hak istimewa atau SELECT pada tabel, mereka tidak dapat menjelajahi silsilah data. Selain itu, pengguna hanya dapat melihat buku catatan, alur kerja, dan dasbor yang izinnya mereka tampilkan. Misalnya, jika Anda menjalankan perintah berikut untuk pengguna userAnon-admin :

GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;

Saat userA melihat grafik silsilah data untuk lineage_data.lineagedemo.menu tabel, grafik tersebut akan melihat menu tabel. Mereka tidak akan dapat melihat informasi tentang tabel terkait, seperti tabel hilir lineage_data.lineagedemo.dinner . Tabel dinner ditampilkan sebagai simpul masked dalam tampilan ke userA, dan userA tidak dapat memperluas grafik untuk mengungkapkan tabel hilir dari tabel yang tidak memiliki izin untuk diakses.

Jika Anda menjalankan perintah berikut untuk memberikan BROWSE izin kepada pengguna userBnon-admin :

GRANT BROWSE on lineage_data to `userA@company.com`;

userB sekarang dapat melihat grafik silsilah untuk tabel apa pun dalam lineage_data skema.

Untuk informasi selengkapnya tentang mengelola akses ke objek yang dapat diamankan di Katalog Unity, lihat Mengelola hak istimewa di Katalog Unity. Untuk informasi selengkapnya tentang mengelola akses ke objek ruang kerja seperti buku catatan, alur kerja, dan dasbor, lihat Daftar kontrol akses.

Menghapus data silsilah data

Peringatan

Instruksi berikut menghapus semua objek yang disimpan di Katalog Unity. Gunakan instruksi ini hanya jika perlu. Misalnya, untuk memenuhi persyaratan kepatuhan.

Untuk menghapus data silsilah data, Anda harus menghapus metastore yang mengelola objek Katalog Unity. Untuk informasi selengkapnya tentang menghapus metastore, lihat Menghapus metastore. Data akan dihapus dalam waktu 90 hari.

Mengkueri data silsilah data menggunakan tabel sistem

Anda dapat menggunakan tabel sistem silsilah data untuk mengkueri data silsilah data secara terprogram. Untuk instruksi terperinci, lihat Memantau penggunaan dengan tabel sistem dan referensi tabel sistem Silsilah.

Jika ruang kerja Anda berada di wilayah yang tidak mendukung tabel sistem silsilah data, Anda dapat menggunakan REST API Silsilah Data untuk mengambil data silsilah data secara terprogram.

Mengambil silsilah data menggunakan DATA Lineage REST API

API silsilah data memungkinkan Anda mengambil silsilah tabel dan kolom. Namun, jika ruang kerja Anda berada di wilayah yang mendukung tabel sistem silsilah data, Anda harus menggunakan kueri tabel sistem alih-alih REST API. Tabel sistem adalah opsi yang lebih baik untuk pengambilan data silsilah data terprogram. Sebagian besar wilayah mendukung tabel sistem silsilah data.

Penting

Untuk mengakses API Databricks REST, Anda harus melakukan autentikasi.

Mengambil silsilah tabel

Contoh ini mengambil data silsilah data untuk dinner tabel.

Minta

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}'

Ganti <workspace-instance>.

Contoh ini menggunakan file .netrc.

Respons

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

Mengambil silsilah kolom

Contoh ini mengambil data kolom untuk dinner tabel.

Minta

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"}'

Ganti <workspace-instance>.

Contoh ini menggunakan file .netrc.

Tanggapan

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