Eigenständige materialisierte Ansichten überwachen

Datenaktualisierung zu einer eigenständigen materialisierten Ansicht mithilfe von Catalog Explorer, DESCRIBE EXTENDED oder dem Pipeline-Ereignisprotokoll ü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.

Im Katalog-Explorer werden Details für jede materialisierte Ansicht in einem rechten Bereich angezeigt, einschließlich:

  1. Aktueller Aktualisierungsstatus und letzte Laufzeit. Wenn Sie weitere Details zum Update anzeigen möchten, einschließlich der Laufzeit, aller detaillierten Fehler und des Aktualisierungstyps (einschließlich der Angabe, 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

Hinweis

Der DESCRIBE EXTENDED Befehl wird für die dedizierte Berechnung nicht unterstützt. Sie müssen die Standardberechnung verwenden, um DESCRIBE EXTENDED in einer materialisierten Ansicht auszuführen.

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 der Ausführung von materialisierten Ansichten

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. Sie können auch Benachrichtigungen für geplante Pipelines einrichten.

Anzeigen aller Ausführungen von materialisierten Ansichten 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. Jeder eigenständigen materialisierten Ansicht liegt eine Pipeline zugrunde. Um alle materialisierten Ansichten und Streamingtabellen anzuzeigen, auf die Sie Zugriff haben:

  1. Klicken Sie auf die Schaltfläche Workflows Symbol.Pipelines & Einzelvorgänge auf der linken Seite Ihres 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 eigenständigen Pipelines zu filtern.
  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.

Benachrichtigungen für geplante Aktualisierungen erhalten

Von Bedeutung

Die Benachrichtigungen für geplante DDL-Aktualisierungen sind in der Betaversion enthalten. Arbeitsbereichsadministratoren können den Zugriff auf diese Funktion über die Vorschauseite steuern, indem sie die Vorschau für den von Systemen verwalteten Einzelvorgang für materialisierte Ansichten & Streamingtabellen aktivieren. Siehe Verwalten von Azure Databricks-Vorschauen.

Wenn Sie einen Zeitplan für Ihre materialisierte Ansicht erstellen, können Sie ihn bearbeiten, um Benachrichtigungen zu erhalten. Es gibt mehrere Möglichkeiten, materialisierte Ansichten zeitlich festzulegen, und der Erhalt von Benachrichtigungen hängt davon ab, welche Methode Sie wählen.

  • Mit einem Einzelvorgang geplant: Um Benachrichtigungen von einer SQL-Aufgabe in Lakeflow-Einzelvorgängen zu erhalten, bearbeiten Sie die Aufgabe und fügen Sie Benachrichtigungen hinzu. Siehe SQL-Aufgabe für Aufträge.

    Sie haben eine Vielzahl von Optionen für die empfangenen Benachrichtigungen und deren Empfang. Siehe Hinzufügen von Benachrichtigungen zu einem Auftrag

  • Geplant mit einer SCHEDULE Klausel: Um Benachrichtigungen aus einer materialisierten Ansicht abzurufen, die von einer SCHEDULE Klausel in der SQL-Definition geplant wird, bearbeiten Sie sie im Katalog-Explorer:

    1. Öffnen Sie die materialisierte Ansicht im Katalog-Explorer.

    2. Klicken Sie auf der Registerkarte " Übersicht " unter " Zeitplan aktualisieren" auf " Bleistift Um den Zeitplan zu bearbeiten, für den Sie Benachrichtigungen empfangen möchten.

    3. Fügen Sie unter "Weitere Optionen" Benachrichtigungen hinzu oder ändern Sie sie.

      Sie haben die Möglichkeit, per E-Mail beim Start, Erfolg oder Fehler der geplanten Aktualisierung benachrichtigt zu werden. Standardmäßig wird der Besitzer nur bei Fehlern benachrichtigt.

Problembehandlung bei einer fehlgeschlagenen Aktualisierung

Sie können fehlerhafte Aktualisierungen für materialisierte Ansichten (oder Streamingtabellen) finden, indem Sie die Liste Einzelvorgänge & 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.
  • 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 die materialisierte Ansicht nicht aktualisiert werden konnte oder andere Probleme aufgetreten sind, klicken Sie auf den Problembereich , um die Protokolle ausführlicher anzuzeigen.

So beheben Sie Ihre materialisierte Ansicht:

  1. Klicken Sie in Ihrem Arbeitsbereich auf die Schaltfläche Workflows Symbol.Einzelvorgänge & 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 im unteren Bereich einen Fehler (oder eine Liste von Fehlern) 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 allgemeine Meldung und Zusammenfassung sowie eine JSON-Registerkarte mit weiteren Details. Klicken Sie auf "Fehler diagnostizieren", um ein Problem mit dem Genie Code 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. Eigenständige materialisierte Ansichten unterstützen das Speichern des Ereignisprotokolls nicht in einem Metastore, 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 Programmgesteuerte Abfrage 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 to be executed as ROW_BASED.

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

Es gibt zwei Möglichkeiten, wie Tags sich auf die Abrechnungsdatensätze für eine materialisierte Ansicht oder Streamingtabelle beziehen, und sie dienen verschiedenen Zwecken:

  • Warehouse-Tags werden automatisch aus dem SQL-Warehouse übernommen und an die custom_tags-Spalte in system.billing.usage weitergegeben. Verwenden Sie diese, um die Kosten für materialisierte Ansichts-/Streamingtabellenaktualisierungen wieder dem SQL-Quelllager zuzuordnen. Dies erfordert keine manuellen Verknüpfungen.
  • Tags auf Objektebene, die einer materialisierten Ansicht oder Streamingtabelle im Catalog Explorer hinzugefügt werden, ordnen die Kosten der jeweiligen Tabelle zu, sodass Sie die Ausgaben nach einer Dimension gruppieren können, die Sie auf dem Objekt selbst definieren, z. B. Team, Projekt oder Kostenstelle. Diese Tags werden nicht automatisch an Abrechnungsdatensätze angefügt. Um sie für die Kostenzuordnung zu verwenden, fügen Sie sie manuell über die table_tags Systemtabelle zusammen, wie in Tags auf Objektebene manuell zusammenfügen beschrieben.

Automatische Weitergabe von Lagerkennzeichnungen

Eine materialisierte Ansicht oder eine Streamingtabelle in Databricks SQL wird hinter den Kulissen über eine serverlose Pipeline ausgeführt. Diese Pipeline erfasst automatisch die benutzerdefinierten Tags aus dem umschließenden Lager, in dem die Anweisung ausgeführt wird, sodass Aktualisierungen auf die gleiche Weise wie jede andere SQL-Anweisung zugeordnet werden, ohne dass zusätzliche Verknüpfungen erforderlich sind, um Kosten auf ein Lager zurückzuverfolgen. Diese Tags werden direkt in der custom_tags Spalte von system.billing.usageangezeigt.

Hinweis

Die Warehouse-Tag-Propagation gilt nur für materialisierte Views und Streaming-Tabellen, deren Anweisungen aus einem SQL-Warehouse laufen. Eigenständige materialisierte Views und Streaming-Tabellen, die mit Python erstellt und aktualisiert wurden, laufen auf serverloser allgemeiner Berechnung statt auf einem SQL-Warehouse, sodass es kein umschließendes Warehouse gibt, von dem Tags geerbt werden könnte. Siehe Python mit eigenständigen Pipelines verwenden.

Welche Tags des Lagers gelten, hängt davon ab, wie die Aktualisierung ausgelöst wird:

  • DDL-Aktualisierungen übernehmen die Tags des Warehouse, das die DDL-Anweisung ausgeführt hat (das CREATE oder CREATE OR REPLACE, das die materialisierte Ansicht/Streaming-Tabelle definiert).
  • Ad-hoc-Aktualisierungen und Aktualisierungen, die durch eine Sql-Aufgabe "Lakeflow Jobs" ausgelöst werden , erben die Tags des Lagers, das diese Aktualisierung ausführt.

Wenn eine Richtlinie zur serverlosen Nutzung und die Warehouse-Tags denselben Tag-Schlüssel definieren, hat das Tag der Nutzungsrichtlinie Vorrang. Dies entspricht dem Konfliktauflösungsverhalten von serverlosen Aufträgen.

Um eine vorhandene materialisierte Ansicht oder Streamingtabelle neu zu taggen, führen Sie CREATE OR REPLACE (oder CREATE OR REFRESH) im Warehouse aus, dessen Tags Sie verwenden möchten. Geplante Aktualisierungen nehmen diese Tags auf.

Materialisierte Ansichten und Streamingtabellen, die in Databricks SQL erstellt wurden, werden in der Abrechnung mit billing_origin_product, das auf SQL gesetzt wurde, und einem ausgefüllten usage_metadata.dlt_pipeline_id angezeigt. Die folgende Abfrage ruft geerbte Lagertags und die DBU-Verwendung für diese Datensätze in den letzten 30 Tagen ab:

SELECT
  usage_metadata.dlt_pipeline_id,
  custom_tags,
  SUM(usage_quantity) AS dbus
FROM system.billing.usage
WHERE billing_origin_product = 'SQL'
  AND usage_metadata.dlt_pipeline_id IS NOT NULL
  AND usage_date >= DATEADD(day, -30, current_date)
GROUP BY ALL
ORDER BY dbus DESC;

Manuelles Verbinden von Tags auf Objektebene

Tags, die einer materialisierten Ansicht (oder Streamingtabelle) im Katalog-Explorer hinzugefügt werden, werden nicht automatisch an Abrechnungsdaten 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.