Freigeben über


Überwachen materialisierter Sichten in Databricks SQL

In diesem Artikel wird beschrieben, wie Sie Aktualisierungsdaten zu einer materialisierten Ansicht in Databricks SQL überwachen und abfragen.

Anzeigen der Details einer einzelnen materialisierten Ansicht

Sie können die Details einer einzelnen materialisierten Ansicht mithilfe des Katalog-Explorers oder programmgesteuert mit dem DESCRIBE EXTENDED Vorgang anzeigen. Sie können das Ereignisprotokoll auch nach Details zum Aktualisierungsverlauf einer materialisierten Ansicht abfragen.

Details im Katalog-Explorer anzeigen

Sie können auf Informationen zu Ihrer materialisierten Ansicht zugreifen, indem Sie sie im Katalog-Explorer anzeigen. Im Katalog-Explorer können Sie den letzten Aktualisierungsstatus und alle aktualisierungszeitpläne sehen, die in SQL erstellt wurden. Ausführliche Informationen zu in SQL erstellten Zeitplänen finden Sie unter CREATE MATERIALIZED VIEW.

Der Katalog-Explorer zeigt Details für jede materialisierte Ansicht in einem rechten Bereich an, einschließlich:

  1. Aktueller Aktualisierungsstatus und letzte Laufzeit. Um weitere Details zum Update anzuzeigen, einschließlich der Laufzeit, eventuelle detaillierte Fehler sowie des Aktualisierungstyps (einschließlich, ob die materialisierte Ansicht vollständig oder inkrementell aktualisiert wurde und warum), klicken Sie auf Aktualisierungsdetails anzeigen.
  2. Zeitplan aktualisieren. Wenn die materialisierte Ansicht einen Zeitplan über SQL festgelegt hat, wird der Zeitplan angezeigt. Verwenden Sie ALTER MATERIALIZED VIEWzum Aktualisieren des Zeitplans .
  3. Tags. Wenn Sie benutzerdefinierte Tags hinzufügen möchten, klicken Sie auf "Tags hinzufügen". Tags werden nicht automatisch für Attributkosten verwendet, aber Sie können manuell eine Abfrage erstellen, um benutzerdefinierte Tags mit Ihren Kosten zu verbinden. Ausführliche Informationen finden Sie unter Attributkosten für das SQL-Lager mit benutzerdefinierten Tags.

Es gibt Eigenschaften der materialisierten Ansicht, die im Katalog-Explorer nicht verfügbar sind. Für diese Eigenschaften oder zum programmgesteuerten Abrufen der Informationen können Sie den DESCRIBE EXTENDED Befehl verwenden.

Details anzeigen mit DESCRIBE EXTENDED

Mithilfe des DESCRIBE EXTENDED Befehls können Sie Details zu einer materialisierten Ansicht programmgesteuert anzeigen. Dies umfasst Details darüber hinaus, was Sie aus dem Katalog-Explorer erhalten. Dazu gehören:

  • Der Status der letzten abgeschlossenen Aktualisierung.

  • Der Aktualisierungszeitplan.

  • Die Spalten der materialisierten Ansicht.

  • Der Aktualisierungstyp der materialisierten Ansicht (im Katalog-Explorer nicht verfügbar).

  • Die Datengröße für die materialisierte Ansicht in Gesamtbytes (nicht im Katalog-Explorer verfügbar).

  • Der Speicherort der materialisierten Ansicht (im Katalog-Explorer nicht verfügbar).

  • Einige Informationen sind nur im Ergebnis enthalten, wenn diese aktiviert sind:

    • Cluster-Spalten, wenn aktiviert.
    • Gibt an, ob Löschvektoren aktiviert sind (nur angezeigt, wenn true).
    • Gibt an, ob die Zeilenverfolgung aktiviert ist (nur angezeigt, wenn true).
-- As table:
DESCRIBE TABLE EXTENDED sales;

-- As a single JSON object:
DESCRIBE TABLE EXTENDED sales AS JSON;

Programmgesteuertes Abfragen des Ereignisprotokolls

Um Details zum Aktualisierungsverlauf für eine materialisierte Ansicht zu erhalten oder um Details zu erhalten, während eine Aktualisierung erfolgt, können Sie das Ereignisprotokoll programmgesteuert abfragen.

Als Pipelinebesitzer können Sie eine Ansicht erstellen, damit andere Personen das Ereignisprotokoll für Ihre Pipeline abfragen können. Die folgende Abfrage erstellt eine Ansicht, die andere zum Abfragen des Ereignisprotokolls verwenden können. Diese Abfrage verwendet die TABLE Wertfunktion, um die richtige Ereignisprotokolltabelle abzufragen.

CREATE VIEW my_event_log_view AS
  SELECT *
  FROM event_log(TABLE(<catalog_name>.<schema_name>.<mv_name>));

Verwenden Sie eine Abfrage wie die folgende, um die Ereignisprotokollansicht abzufragen.

SELECT *
  FROM my_event_log_view
  WHERE event_type = "update_progress"
  ORDER BY timestamp desc;

Um das Ereignisprotokoll direkt als Pipelinebesitzer abzufragen, müssen Sie keine Ansicht erstellen. Sie können die TABLE Wertfunktion verwenden und die Daten direkt abfragen, z. B. die folgende Beispielabfrage.

SELECT *
  FROM event_log(TABLE(<catalog_name>.<schema_name>.<mv_name>))
  WHERE event_type = "update_progress"
  ORDER BY timestamp desc;

Eine vollständige Liste der Beispielabfragen mithilfe des Ereignisprotokolls finden Sie in den grundlegenden Abfragebeispielen.

Überwachen materialisierter Ansichtsläufe

Sie können die Pipelinedurchläufe in Ihrem gesamten Arbeitsbereich überwachen, indem Sie die Seite „Aufträge und Pipelines“, die Seite „Abfrageverlauf“ oder programmgesteuert durch Abfragen des Ereignisprotokolls verwenden.

Anzeigen aller materialisierten Ansichtsläufe auf der Benutzeroberfläche

Wenn Sie die Seite "Aufträge und Pipelines " verwenden, um den Status verschiedener Orchestrierungsaufträge in Ihrem Arbeitsbereich zu überwachen, können Sie auch alle dort erstellten materialisierten Ansichten und Streamingtabellen nachverfolgen. Jede materialisierte Ansicht, die in Databricks SQL erstellt wurde, verfügt über eine Pipeline, die sie sichert. Um alle materialisierten Ansichten und Streamingtabellen anzuzeigen, auf die Sie Zugriff haben:

  1. Klicken Sie auf das Symbol Schaltfläche "Aufträge & Pipelines" auf der linken Seite des Arbeitsbereichs.
  2. Klicken Sie auf die Umschaltfläche "Pipelines ", um die Ansicht nur auf Pipelines zu filtern.
  3. Klicken Sie auf die Schaltfläche "Pipelinetyp ", und wählen Sie MV/ST aus, um nur nach Pipelines zu filtern, die von Databricks SQL erstellt wurden.
  4. Klicken Sie auf den Filter "Zugriff durch mich ", um alle Pipelines anzuzeigen, auf die Sie Zugriff haben.

Sie können alle materialisierten Ansichten und Streamingtabellen anzeigen, die in Ihrer Organisation erstellt wurden, einschließlich einer Zusammenfassungsansicht der aktuellen Ausführungsstatus. Wenn Sie auf den Namen einer Pipeline klicken, wird die Seite mit den Details zur Pipelineüberwachung geöffnet, um weitere Informationen zu erhalten. Weitere Informationen zur Seite "Pipelineüberwachungsdetails" finden Sie unter "Problembehandlung bei einer fehlgeschlagenen Aktualisierung".

Ausführungen mithilfe des Abfrageverlaufs anzeigen

Wenn Sie mit der Registerkarte "Abfrageverlauf " vertraut sind, können Sie sie auch verwenden, um alle vorherigen Ausführungen aller Abfragen anzuzeigen, auf die Sie mindestens CAN VIEW Zugriff auf das ausgeführte SQL-Warehouse haben. Sie können die Abfrageverlaufsseite verwenden, um auf Abfragedetails und Abfrageprofile zuzugreifen, die Ihnen helfen können, schlecht ausgeführte Abfragen und Engpässe in der Pipeline zu identifizieren, die zum Ausführen ihrer Streamingtabellenaktualisierungen verwendet werden. Eine Übersicht über die Art der Informationen, die für Abfragehistorien und Abfrageprofile verfügbar sind, finden Sie unter "Abfrageverlauf " und "Abfrageprofil".

Von Bedeutung

Dieses Feature befindet sich in der Public Preview. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Verwalten von Azure Databricks-Vorschauen.

Alle Anweisungen im Zusammenhang mit materialisierten Sichten werden im Abfrageverlauf angezeigt. Sie können das Dropdown-Menü "Statement" verwenden, um einen beliebigen Befehl auszuwählen und die zugehörigen Abfragen zu überprüfen. Auf alle CREATE Anweisungen folgt eine REFRESH Anweisung, die asynchron in einer Pipeline ausgeführt wird. Die REFRESH Anweisungen enthalten in der Regel detaillierte Abfragepläne, die Einblicke in die Optimierung der Leistung bieten.

Führen Sie die folgenden Schritte aus, um auf REFRESH Anweisungen in der Query History UI zuzugreifen:

  1. Klicken Sie auf das Symbol Abfrageverlauf in der linken Seitenleiste.
  2. Aktivieren Sie das Kontrollkästchen REFRESH im Dropdownfilter Anweisung.
  3. Klicken Sie auf den Namen der Abfrage-Anweisung, um Zusammenfassungsdetails wie die Dauer der Abfrage und aggregierte Metriken anzuzeigen.
  4. Klicken Sie auf " Abfrageprofil anzeigen", um das Abfrageprofil zu öffnen. Ausführliche Informationen zum Navigieren im Abfrageprofil finden Sie unter "Abfrageprofil".
  5. Optional können Sie die Verknüpfungen im Abschnitt "Abfragequelle " verwenden, um die zugehörige Abfrage oder Pipeline zu öffnen.

Siehe CREATE MATERIALIZED VIEW.

Problembehandlung bei einer fehlgeschlagenen Aktualisierung

Sie können fehlerhafte Aktualisierungen für materialisierte Ansichten (oder Streamingtabellen) finden, indem Sie die Liste „Aufträge und Pipelines“ durchsuchen. Verwenden Sie die Pipelineüberwachungsdetailseite oder das Ereignisprotokoll, um ein fehlgeschlagenes Update zu beheben.

Um eine Aktualisierung zu beheben, die vollständig ist, wenn Sie der Meinung sind, dass sie inkrementell sein sollte, überprüfen Sie zunächst, ob die Zeilenverfolgung für alle Quell-Delta-Tabellen aktiviert ist . Weitere Details zur inkrementellen Aktualisierung finden Sie unter Unterstützung für die inkrementelle Aktualisierung der materialisierten Ansicht.

Sie können zusätzliche Details von der Pipelineüberwachungsseite abrufen oder das Ereignisprotokoll programmgesteuert abfragen.

Seite zur Überwachung der Pipeline verwenden

Um weitere Details zu einer materialisierten Ansicht (oder Streamingtabelle) zu erhalten, die fehlgeschlagen ist, können Sie die Pipelineüberwachungsseite zum Debuggen von Problemen verwenden. Jede materialisierte Ansicht wird von einer Pipeline unterstützt. Die Pipelineüberwachungsseite enthält Informationen, z. B.:

  • Der Status der letzten Ausführung und des Ausführungsverlaufs.
  • Die Dauer der letzten Ausführung.
  • Gibt an, ob die materialisierte Ansicht vollständig oder inkrementell aktualisiert wurde. Weitere Informationen zum inkrementellen Aktualisieren Ihrer materialisierten Ansicht finden Sie unter Unterstützung für die inkrementelle Aktualisierung der materialisierten Ansicht.
  • Das Ereignisprotokoll zum detaillierteren Debuggen. Wenn ihre materialisierte Ansicht nicht aktualisiert werden konnte oder andere Probleme aufgetreten ist, klicken Sie auf den Problembereich , um die Protokolle ausführlicher anzuzeigen.

So beheben Sie Ihre materialisierte Ansicht:

  1. Klicken Sie in Ihrem Arbeitsbereich auf das Symbol Schaltfläche "Aufträge & Pipelines" auf der linken Navigationsleiste.
  2. Klicken Sie in der Liste auf den Namen Ihrer Pipeline.
  3. Wenn das Update nicht ausgeführt werden konnte, zeigt die Benutzeroberfläche einen Fehler (oder eine Liste von Fehlern) im unteren Bereich an.
  4. Klicken Sie entweder auf die Schaltfläche, um Protokolle anzuzeigen , oder klicken Sie auf den Problembereich , um die Fehler ausführlicher anzuzeigen.
  5. Dadurch wird die Ereignisprotokoll-Benutzeroberfläche geöffnet. Jeder Fehler enthält eine hochwertige Meldung und Zusammenfassung sowie einen JSON-Tab mit weiteren Details. Klicken Sie auf " Fehler diagnostizieren", um ein Problem mit dem Databricks-Assistenten zu beheben.

Weitere Informationen zur Pipelineüberwachungsseite finden Sie hier.

Abfragen des Aktualisierungsverlaufs für eine materialisierte Ansicht

Das Ereignisprotokoll kann nützlich sein, um Dashboards einzurichten, um den Aktualisierungsstatus oder die Dauer im gesamten Arbeitsbereich zu überwachen, oder wenn Sie die programmgesteuerte Überwachung über die Benutzeroberfläche bevorzugen. Materialisierte Ansichten, die mit Databricks SQL erstellt wurden, unterstützen das Speichern des Ereignisprotokolls in einem Metastore nicht, sodass nur der Besitzer der materialisierten Ansicht das Ereignisprotokoll direkt abfragen kann.

Um den Status von REFRESH Vorgängen in einer materialisierten Ansicht anzuzeigen, einschließlich aktueller und vergangener Aktualisierungen, fragen Sie das Pipelineereignisprotokoll ab:

SELECT *
FROM event_log(TABLE(<fully-qualified-table-name>))
WHERE event_type = "update_progress"
ORDER BY timestamp desc;

Ersetzen Sie <fully-qualified-table-name> durch den vollständig qualifizierten Namen der materialisierten Ansicht, einschließlich des Katalogs und des Schemas. Wenn Sie nicht der Pipelinebesitzer sind, müssen Sie möglicherweise zuerst eine Ansicht erstellt haben, um das Ereignisprotokoll abzufragen. Siehe programmgesteuertes Abfragen des Ereignisprotokolls.

Den Aktualisierungstyp einer materialisierten Ansicht abfragen.

Einige Abfragen können inkrementell aktualisiert werden. Wenn keine inkrementelle Aktualisierung möglich ist, wird stattdessen eine vollständige Aktualisierung durchgeführt.

Um den Aktualisierungstyp für eine materialisierte Ansicht anzuzeigen, fragen Sie das Ereignisprotokoll ab:

SELECT timestamp, message
FROM event_log(TABLE(my_catalog.my_schema.sales))
WHERE event_type = 'planning_information'
ORDER BY timestamp desc;

Beispielausgabe für diesen Befehl:

    • Zeitstempel
    • message
    • 2025-03-21T22:23:16.497+00:00
    • Flow 'sales' has been planned in :re[LDP] to be executed as ROW_BASED.

Weisen Sie die Kosten dem SQL-Warehouse durch benutzerdefinierte Tags zu

Tags werden nicht automatisch an Abrechnungsdatensätze angefügt, sie können aber manuell mit Ihren Abrechnungsinformationen in einer Abfrage verknüpft werden.

Nachdem Sie jeder materialisierten Ansicht (oder Streamingtabelle) mit Katalog-Explorer Tags hinzugefügt haben, können Sie die Kosten für materialisierte Ansichten überwachen, indem Sie die table_tags Tabellen und billing Systemtabellen verknüpfen. Dies ist eine Beispielabfrage zum Abrufen von Abrechnungsdatensätzen für alle materialisierten Ansichten und Streamingtabellen, die mit Databricks SQL erstellt wurden und Tags auf Tabellenebene anfügen:

SELECT
  u.*,
  tag_info.tags
FROM
  system.billing.usage u
LEFT JOIN (
  SELECT
    t.catalog_name,
    t.schema_name,
    t.table_name,
    collect_list(named_struct('tag_name', t.tag_name, 'tag_value', t.tag_value)) AS tags
  FROM
    main.information_schema.table_tags t
  GROUP BY
    t.catalog_name,
    t.schema_name,
    t.table_name
) tag_info
  ON tag_info.catalog_name = u.usage_metadata.uc_table_catalog
  AND tag_info.schema_name = u.usage_metadata.uc_table_schema
  AND tag_info.table_name = u.usage_metadata.uc_table_name
  WHERE usage_metadata.uc_table_name is not null;

Sie können stattdessen die gleiche Idee verwenden, um Spaltentags aus der column_tags Tabelle zu verbinden.