Bagikan melalui


Membuat monitor menggunakan API

Halaman ini menjelaskan cara membuat monitor di Databricks menggunakan Databricks SDK dan menjelaskan semua parameters 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 pemantauan pada Delta table yang terkelola atau eksternal yang terdaftar di Unity Catalog. Hanya satu monitor yang dapat dibuat di metastore Unity Catalog untuk tableapa 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 select salah satu tipe 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 didefinisikan pada views yang diwujudkan dan streaming tables tidak mendukung pemrosesan inkremental.

Tip

Untuk profil TimeSeries dan Inference, praktik terbaik adalah mengaktifkan Change Data Feed (CDF) di tableAnda. Ketika CDF diaktifkan, hanya data yang baru ditambahkan yang diproses, daripada memproses ulang seluruh table setiap refresh. Ini membuat eksekusi lebih efisien dan mengurangi biaya saat Anda meningkatkan skala pemantauan pada banyak tables.

TimeSeries profil

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

  • Tanda waktu column (timestamp_col). Jenis data stempel waktu column harus TIMESTAMP atau tipe yang bisa dikonversi menjadi stempel waktu menggunakan fungsi PySpark to_timestamp.
  • Penghitungan metrik di atas set dari granularities. Granularitas yang tersedia adalah "5 menit", "30 menit", "1 jam", "1 hari", "1 minggu", "2 minggu", "3 minggu", "4 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. Untuk profil InferenceLog, parameters berikut diperlukan:

Parameter Deskripsi
problem_type MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION atau MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION
prediction_col Column yang berisi prediksi valuesdari model.
timestamp_col Column yang berisi tanda waktu permintaan inferensi.
model_id_col Column berisi id model yang digunakan untuk prediksi.
granularities Menentukan cara partition data di jendela sepanjang waktu. Kemungkinan values: "5 menit", "30 menit", "1 jam", "1 hari", "1 minggu", "2 minggu", "3 minggu", "4 minggu", "1 bulan", "1 tahun".

Ada juga parameter opsional:

Parameter opsional. Deskripsi
label_col Column 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 valuesmodel_id_colyang berbeda.

Snapshot profil

Berbeda dengan TimeSeries, profil Snapshot memantau bagaimana konten lengkap table berubah dari waktu ke waktu. Metrik dihitung atas semua data dalam table, dan memantau status table 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()
)

Refresh dan melihat hasil monitoring

Untuk refresh metrik tables, 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, metrik monitor tables 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 metrik tables, lihat Monitor metrik tables Metrik tables Unity Catalogtables. 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 get status run 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 menjalankan set monitor secara terjadwal, gunakan parameter schedule dari 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 set pemberitahuan untuk monitor, gunakan parameter notificationscreate_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 tables metrik

Metrik tables dan dasbor yang dibuat oleh monitor dimiliki oleh pengguna yang membuat monitor. Anda dapat menggunakan hak istimewa Unity Catalog untuk mengontrol akses ke metrik tables. 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 profil tables 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, refresh monitor, dan memeriksa metrik tables dibuatnya.

Contoh buku catatan: Profil rangkaian waktu

Buku catatan ini mengilustrasikan cara membuat TimeSeries monitor tipe.

Buku catatan contoh TimeSeries Lakehouse Monitor

Get 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

Get 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

Get buku catatan

Contoh buku catatan: Profil rekam jepret

Buku catatan ini mengilustrasikan cara membuat Snapshot monitor tipe.

Buku catatan contoh Snapshot Lakehouse Monitor

Get buku catatan