Freigeben über


Erstellen eines Datenprofils mithilfe der quality_monitors API (veraltet)

Von Bedeutung

Die auf dieser Seite beschriebene API ist veraltet. Informationen zur aktuellen API finden Sie unter dem Abschnitt Datenprofil mithilfe der API erstellen.

Auf dieser Seite wird beschrieben, wie Sie mithilfe des Databricks SDK ein Datenprofil in Databricks erstellen und die in API-Aufrufen verwendeten Parameter beschreiben. Sie können auch ein Datenprofil mithilfe der REST-API erstellen und verwalten.

Referenzinformationen für diese veraltete API finden Sie in der Datenprofil-SDK-Referenz (veraltet) und der REST-API-Referenz (veraltet).

Sie können ein Profil für jede verwaltete oder externe Delta-Tabelle erstellen, die im Unity-Katalog registriert ist. Es kann nur ein einzelnes Profil in einem Unity-Katalogmetastore für jede Tabelle erstellt werden.

Anforderungen

Die Datenprofil-API ist in databricks-sdk 0.28.0 und höher integriert. Um die neueste Version der API zu verwenden, verwenden Sie den folgenden Befehl am Anfang Ihres Notizbuchs, um den Python-Client zu installieren:

%pip install "databricks-sdk>=0.28.0"

Informationen zur Authentifizierung zur Verwendung des Databricks SDK in Ihrer Umgebung finden Sie unter "Authentifizierung".

Profiltypen

Wenn Sie ein Profil erstellen, wählen Sie einen der folgenden Profiltypen aus: TimeSeries, , InferenceLog, oder Snapshot. In diesem Abschnitt werden die einzelnen Optionen kurz beschrieben. Ausführliche Informationen finden Sie in der Datenprofil-SDK-Referenz (veraltet) oder in der REST-API-Referenz (veraltet).

Hinweis

  • Wenn Sie zum ersten Mal eine Zeitreihe oder ein Rückschlussprofil erstellen, analysiert Databricks nur Daten aus den 30 Tagen vor der Erstellung. Nachdem das Profil erstellt wurde, werden alle neuen Daten verarbeitet.
  • Profile, die in materialisierten Ansichten definiert sind, unterstützen keine inkrementelle Verarbeitung.

Tipp

Für TimeSeries und Inference Profile empfiehlt es sich, Änderungsdatenfeeds (CDF) in Ihrer Tabelle zu aktivieren. Wenn CDF aktiviert ist, werden nur neu angefügte Daten verarbeitet, anstatt die gesamte Tabelle bei jeder Aktualisierung erneut zu verarbeiten. Dies macht die Ausführung effizienter und reduziert die Kosten, während Sie über viele Tabellen skalieren.

TimeSeries Profil

Ein TimeSeries Profil vergleicht Datenverteilungen über Zeitfenster hinweg. Für ein TimeSeries Profil müssen Sie Folgendes angeben:

  • Eine Zeitstempelspalte (timestamp_col). Der Datentyp der Zeitstempelspalte muss entweder TIMESTAMP oder ein Typ sein, der mithilfe der to_timestampPySpark-Funktion in Zeitstempel konvertiert werden kann.
  • Der Satz, über granularities den Metriken berechnet werden sollen. Verfügbare Granularitäten sind "5 Minuten", "30 Minuten", "1 Stunde", "1 Tag", "1 Woche", "2 Wochen", "3 Wochen", "4 Wochen", "1 Monat", "1 Jahr".
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

Ein InferenceLog Profil ähnelt einem TimeSeries Profil, enthält aber auch Modellqualitätsmetriken. InferenceLog Profile verwenden die folgenden Parameter:

Parameter Beschreibung
problem_type MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION oder MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION
prediction_col Spalte, die die vorhergesagten Werte des Modells enthält.
timestamp_col Spalte, die den Zeitstempel der Rückschlussanforderung enthält.
model_id_col Spalte mit der ID des Modells, das für die Vorhersage verwendet wird.
granularities Bestimmt, wie die Daten in Fenstern über einen Zeitraum partitioniert werden. Mögliche Werte: "5 Minuten", "30 Minuten", "1 Stunde", "1 Tag", "1 Woche", "2 Wochen", "3 Wochen", "4 Wochen", "1 Monat", "1 Jahr".
label_col (Optional) Spalte, die die Grund-Wahrheit für Modellvorhersagen enthält.
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
  )
)

Bei InferenceLog Profilen werden Slices automatisch basierend auf den verschiedenen Werten von model_id_col erstellt.

Snapshot Profil

Im Gegensatz zu TimeSeries beschreibt ein Snapshot-Profil, wie sich der vollständige Inhalt der Tabelle im Laufe der Zeit ändert. Metriken werden über alle Daten in der Tabelle berechnet und spiegeln den Tabellenstatus bei jeder Aktualisierung des Profils wider.

Hinweis

Die maximale Tabellengröße für ein Momentaufnahmeprofil beträgt 4 TB. Verwenden Sie für größere Tabellen stattdessen Zeitreihenprofile.

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()
)

Aktualisieren und Anzeigen von Ergebnissen

Um den Aktualisierungsverlauf anzuzeigen, müssen Sie den Databricks-Arbeitsbereich verwenden, aus dem Datenprofilierung aktiviert wurde.

Verwenden Sie run_refresh zum Aktualisieren von Metriktabellen. Beispiel:

from databricks.sdk import WorkspaceClient

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

Wenn Sie von einem Notizbuch aus anrufen run_refresh , werden die Metriktabellen erstellt oder aktualisiert. Diese Berechnung wird auf serverloser Berechnung ausgeführt, nicht auf dem Cluster, an den das Notizbuch angefügt ist. Sie können weiterhin Befehle im Notizbuch ausführen, während die Statistiken aktualisiert werden.

Informationen zu den Statistiken, die in metrischen Tabellen gespeichert sind, finden Sie unter "Metriktabellen überwachen". Metriktabellen sind Unity-Katalog-Tabellen. Sie können sie in Notizbüchern oder im SQL-Abfrage-Explorer abfragen und im Katalog-Explorer anzeigen.

Um den Verlauf aller Aktualisierungen anzuzeigen, die einem Profil zugeordnet sind, verwenden Sie list_refreshes.

from databricks.sdk import WorkspaceClient

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

Um den Status einer bestimmten Ausführung zu erhalten, die in die Warteschlange gestellt, ausgeführt oder fertig gestellt wurde, verwenden Sie 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
)

Um eine Aktualisierung abzubrechen, die in die Warteschlange gestellt oder ausgeführt wird, verwenden Sie 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
)

Profileinstellungen anzeigen

Sie können Profileinstellungen mithilfe der API get_monitorüberprüfen.

from databricks.sdk import WorkspaceClient

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

Zeitplan

Verwenden Sie zum Einrichten eines Profils, das planmäßig ausgeführt werden soll, den Parameter schedule von 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",
    )
)

Weitere Informationen finden Sie unter Cron-Ausdrücke .

Benachrichtigungen

Verwenden Sie zum Einrichten von Benachrichtigungen für ein Profil den 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"]
        )
    )
)

Pro Ereignistyp wird maximal 5 E-Mail-Adressen unterstützt (z. B. "on_failure").

Steuern des Zugriffs auf Metriktabellen

Die durch ein Profil erstellten Metriktabellen und das Dashboard gehören dem Benutzer, der das Profil erstellt hat. Sie können Unity-Katalogberechtigungen verwenden, um den Zugriff auf Metriktabellen zu steuern. Um Dashboards innerhalb eines Arbeitsbereichs freizugeben, verwenden Sie die Schaltfläche " Freigeben " oben rechts im Dashboard.

Ein Profil löschen

So löschen Sie ein Profil:

from databricks.sdk import WorkspaceClient

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

Mit diesem Befehl werden die Profiltabellen und das vom Profil erstellte Dashboard nicht gelöscht. Sie müssen diese Ressourcen in einem separaten Schritt löschen, oder Sie können sie an einem anderen Speicherort speichern.

Beispielnotebooks

In den folgenden Beispielnotizbüchern wird veranschaulicht, wie Sie ein Profil erstellen, das Profil aktualisieren und die von ihr erstellten Metriktabellen untersuchen.

Notizbuchbeispiel: Zeitreihenprofil

Dieses Notizbuch veranschaulicht das Erstellen eines TimeSeries Typprofils.

TimeSeries-Profilbeispielnotizbuch

Notebook abrufen

Notizbuchbeispiel: Rückschlussprofil (Regression)

Dieses Notizbuch veranschaulicht, wie Sie ein InferenceLog Typprofil für ein Regressionsproblem erstellen.

Beispielnotizbuch zur Rückschlussprofilregression

Notebook abrufen

Notizbuchbeispiel: Rückschlussprofil (Klassifizierung)

Dieses Notizbuch veranschaulicht, wie Sie ein InferenceLog Typprofil für ein Klassifizierungsproblem erstellen.

Notebook-Beispiel zur Inferenzprofilklassifizierung

Notebook abrufen

Notizbuchbeispiel: Schnappschussprofil

Dieses Notizbuch veranschaulicht das Erstellen eines Snapshot Typprofils.

Beispiel-Notebook für Snapshot-Profile

Notebook abrufen