Bagikan melalui


Membuat monitor menggunakan API

Halaman ini menjelaskan cara membuat monitor di Databricks menggunakan Databricks SDK dan menjelaskan semua parameter yang digunakan dalam panggilan API. Anda juga dapat membuat dan mengelola monitor menggunakan REST API. Untuk informasi referensi, lihat referensi SDK pemantauan Lakehouse dan referensi REST API.

Anda dapat membuat monitor pada tabel Delta terkelola atau eksternal yang terdaftar di Katalog Unity. Hanya satu monitor yang dapat dibuat di metastore Unity Catalog untuk tabel apa pun.

Persyaratan

Lakehouse Monitoring API dibangun menjadi databricks-sdk 0.28.0 ke atas. Untuk menggunakan versi API terbaru, gunakan perintah berikut di awal buku catatan Anda untuk menginstal klien Python:

%pip install "databricks-sdk>=0.28.0"

Untuk mengautentikasi untuk menggunakan Databricks SDK di lingkungan Anda, lihat Autentikasi.

Jenis profil

Saat membuat monitor, Anda memilih salah satu jenis profil berikut: TimeSeries, InferenceLog, atau Snapshot. Bagian ini secara singkat menjelaskan setiap opsi. Untuk detailnya, lihat referensi API atau referensi REST API.

Catatan

  • Ketika Anda pertama kali membuat rangkaian waktu atau profil inferensi, monitor hanya menganalisis data dari 30 hari sebelum pembuatannya. Setelah monitor dibuat, semua data baru diproses.
  • Monitor yang ditentukan pada tampilan materialisasi dan tabel streaming tidak mendukung pemrosesan inkremental.

Tip

Untuk TimeSeries profil dan Inference , ini adalah praktik terbaik untuk mengaktifkan umpan data perubahan (CDF) pada tabel Anda. Ketika CDF diaktifkan, hanya data yang baru ditambahkan yang diproses, daripada memproses ulang seluruh tabel setiap refresh. Ini membuat eksekusi lebih efisien dan mengurangi biaya saat Anda menskalakan pemantauan di banyak tabel.

TimeSeries profil

TimeSeries Profil membandingkan distribusi data di seluruh jendela waktu. TimeSeries Untuk profil, Anda harus memberikan hal berikut:

  • Kolom tanda waktu (timestamp_col). Jenis data kolom tanda waktu harus berupa TIMESTAMP atau jenis yang dapat dikonversi ke tanda waktu menggunakan to_timestamp fungsi PySpark.
  • Kumpulan granularities di mana untuk menghitung metrik. Granularitas yang tersedia adalah "5 menit", "30 menit", "1 jam", "1 hari", "n minggu", "1 bulan", "1 tahun".
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorTimeSeries

w = WorkspaceClient()
w.quality_monitors.create(
  table_name=f"{catalog}.{schema}.{table_name}",
  assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
  output_schema_name=f"{catalog}.{schema}",
  time_series=MonitorTimeSeries(timestamp_col=ts, granularities=["30 minutes"])
)

InferenceLog profil

Profil InferenceLog mirip TimeSeries dengan profil tetapi juga menyertakan metrik kualitas model. InferenceLog Untuk profil, parameter berikut diperlukan:

Parameter Deskripsi
problem_type MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION atau MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION
prediction_col Kolom yang berisi nilai model yang diprediksi.
timestamp_col Kolom yang berisi tanda waktu permintaan inferensi.
model_id_col Kolom yang berisi id model yang digunakan untuk prediksi.
granularities Menentukan cara mempartisi data di jendela sepanjang waktu. Nilai yang mungkin: "5 menit", "30 menit", "1 jam", "1 hari", "n minggu", "1 bulan", "1 tahun".

Ada juga parameter opsional:

Parameter opsional. Deskripsi
label_col Kolom yang berisi kebenaran dasar untuk prediksi model.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorInferenceLog, MonitorInferenceLogProblemType

w = WorkspaceClient()
w.quality_monitors.create(
  table_name=f"{catalog}.{schema}.{table_name}",
  assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
  output_schema_name=f"{catalog}.{schema}",
  inference_log=MonitorInferenceLog(
        problem_type=MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION,
        prediction_col="preds",
        timestamp_col="ts",
        granularities=["30 minutes", "1 day"],
        model_id_col="model_ver",
        label_col="label", # optional
  )
)

Untuk profil InferenceLog, irisan secara otomatis dibuat berdasarkan nilai yang berbeda dari model_id_col.

Snapshot profil

Berbeda dengan , Snapshot profil memantau bagaimana konten lengkap tabel berubah dari waktu ke TimeSerieswaktu. Metrik dihitung atas semua data dalam tabel, dan memantau status tabel setiap kali monitor di-refresh.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorSnapshot

w = WorkspaceClient()
w.quality_monitors.create(
  table_name=f"{catalog}.{schema}.{table_name}",
  assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
  output_schema_name=f"{catalog}.{schema}",
  snapshot=MonitorSnapshot()
)

Merefresh dan melihat hasil pemantauan

Untuk me-refresh tabel metrik, gunakan run_refresh. Contohnya:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
w.quality_monitors.run_refresh(
    table_name=f"{catalog}.{schema}.{table_name}"
)

Saat Anda memanggil run_refresh dari buku catatan, tabel metrik monitor dibuat atau diperbarui. Perhitungan ini berjalan pada komputasi tanpa server, bukan pada kluster tempat buku catatan dilampirkan. Anda dapat terus menjalankan perintah di buku catatan saat statistik monitor diperbarui.

Untuk informasi tentang statistik yang disimpan dalam tabel metrik, lihat Memantau tabel Metrik tabel metrik adalah tabel Unity Catalog. Anda bisa mengkuerinya di buku catatan atau di penjelajah kueri SQL, dan menampilkannya di Catalog Explorer.

Untuk menampilkan riwayat semua refresh yang terkait dengan monitor, gunakan list_refreshes.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
w.quality_monitors.list_refreshes(
    table_name=f"{catalog}.{schema}.{table_name}"
)

Untuk mendapatkan status eksekusi tertentu yang telah diantrekan, berjalan, atau selesai, gunakan get_refresh.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
run_info = w.quality_monitors.run_refresh(table_name=f"{catalog}.{schema}.{table_name}")

w.quality_monitors.get_refresh(
    table_name=f"{catalog}.{schema}.{table_name}",
    refresh_id = run_info.refresh_id
)

Untuk membatalkan refresh yang diantrekan atau berjalan, gunakan cancel_refresh.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
run_info = w.quality_monitors.run_refresh(table_name=f"{catalog}.{schema}.{table_name}")

w.quality_monitors.cancel_refresh(
    table_name=f"{catalog}.{schema}.{table_name}",
    refresh_id=run_info.refresh_id
)

Lihat pengaturan monitor

Anda dapat meninjau pengaturan pemantauan menggunakan API get_monitor.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
w.quality_monitors.get(f"{catalog}.{schema}.{table_name}")

Jadwal

Untuk menyiapkan monitor yang akan dijalankan secara terjadwal, gunakan schedule parameter :create_monitor

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorTimeSeries, MonitorCronSchedule

w = WorkspaceClient()
w.quality_monitors.create(
  table_name=f"{catalog}.{schema}.{table_name}",
  assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
  output_schema_name=f"{catalog}.{schema}",
  time_series=MonitorTimeSeries(timestamp_col=ts, granularities=["30 minutes"]),
  schedule=MonitorCronSchedule(
        quartz_cron_expression="0 0 12 * * ?", # schedules a refresh every day at 12 noon
        timezone_id="PST",
    )
)

Lihat ekspresi cron untuk informasi selengkapnya.

Notifications

Untuk menyiapkan pemberitahuan untuk monitor, gunakan notifications parameter :create_monitor

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorTimeSeries, MonitorNotifications, MonitorDestination

w = WorkspaceClient()
w.quality_monitors.create(
  table_name=f"{catalog}.{schema}.{table_name}",
  assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
  output_schema_name=f"{catalog}.{schema}",
  time_series=MonitorTimeSeries(timestamp_col=ts, granularities=["30 minutes"]),
  notifications=MonitorNotifications(
        # Notify the given email when a monitoring refresh fails or times out.
        on_failure=MonitorDestination(
            email_addresses=["your_email@domain.com"]
        )
    )
)

Maksimal 5 alamat email didukung per jenis peristiwa (misalnya, "on_failure").

Mengontrol akses ke tabel metrik

Tabel metrik dan dasbor yang dibuat oleh monitor dimiliki oleh pengguna yang membuat monitor. Anda dapat menggunakan hak istimewa Unity Catalog untuk mengontrol akses ke tabel metrik. Untuk berbagi dasbor dalam ruang kerja, gunakan tombol Bagikan di kanan atas dasbor.

Menghapus monitor

Untuk menghapus monitor:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
w.quality_monitors.delete(table_name=f"{catalog}.{schema}.{table_name}")

Perintah ini tidak menghapus tabel profil dan dasbor yang dibuat oleh monitor. Anda harus menghapus aset tersebut dalam langkah terpisah, atau Anda dapat menyimpannya di lokasi yang berbeda.

Contoh buku catatan

Contoh notebook berikut mengilustrasikan cara membuat monitor, merefresh monitor, dan memeriksa tabel metrik yang dibuatnya.

Contoh buku catatan: Profil rangkaian waktu

Buku catatan ini mengilustrasikan cara membuat TimeSeries monitor tipe.

Buku catatan contoh TimeSeries Lakehouse Monitor

Dapatkan buku catatan

Contoh buku catatan: Profil inferensi (regresi)

Buku catatan ini menggambarkan cara membuat InferenceLog pemantau jenis untuk masalah regresi.

Buku catatan contoh regresi Inferensi Lakehouse Monitor

Dapatkan buku catatan

Contoh buku catatan: Profil inferensi (klasifikasi)

Buku catatan ini mengilustrasikan cara membuat InferenceLog monitor jenis untuk masalah klasifikasi.

Buku catatan contoh klasifikasi Inferensi Lakehouse Monitor

Dapatkan buku catatan

Contoh buku catatan: Profil rekam jepret

Buku catatan ini mengilustrasikan cara membuat Snapshot monitor tipe.

Buku catatan contoh Snapshot Lakehouse Monitor

Dapatkan buku catatan