Verwenden materialisierter Sichten in Databricks SQL
Hinweis
Wenn Sie eine Azure Private Link-Verbindung mit Ihren materialisierten Sicht verwenden müssen, wenden Sie sich an Ihren Databricks-Mitarbeiter.
In diesem Artikel wird beschrieben, wie Sie materialisierte Sichten in Databricks SQL erstellen und diese verwenden, um die Leistung zu verbessern und die Kosten für Ihre Datenverarbeitungs- und Analyseworkloads zu senken.
Wichtig
In Databricks SQL erstellte materialisierte Ansichten werden von einer serverlosen Delta Live Tables-Pipeline unterstützt. Ihr Arbeitsbereich muss serverlose Pipelines unterstützen, um diese Funktionalität zu verwenden.
Was sind materialisierte Sichten?
In Databricks SQL sind materialisierte Sichten von Unity Catalog verwaltete Tabellen, die es Benutzer*innen ermöglichen, Ergebnisse auf Grundlage der neuesten Version von Daten in Quelltabellen vorab zu berechnen. Materialisierte Sichten in Azure Databricks unterscheiden sich von anderen Implementierungen, da die zurückgegebenen Ergebnisse den Zustand der Daten zum Zeitpunkt der letzten Aktualisierung der materialisierten Sicht widerspiegeln, anstatt die Ergebnisse bei jeder Abfrage der materialisierten Sicht zu aktualisieren. Sie können materialisierte Sichten manuell aktualisieren oder Aktualisierungen planen.
Materialisierte Sichten eignen sich besonders gut für Workloads zur Datenverarbeitung, beispielsweise für das Extrahieren, Transformieren und Laden (ETL). Materialisierte Sichten bieten eine einfache, deklarative Möglichkeit für die Datenverarbeitung im Rahmen von Compliance, Korrekturen, Aggregationen oder allgemeinen CDC-Vorgängen (Change Data Capture). Materialisierte Sichten senken die Kosten und verbessern die Abfragelatenz, indem sie langsame Abfragen und häufig verwendete Berechnungen vorab berechnen. Materialisierte Sichten unterstützen zudem benutzerfreundliche Transformationen, indem sie Basistabellen bereinigen, anreichern und denormalisieren. Materialisierte Sichten können die Kosten senken und gleichzeitig die Arbeit der Endbenutzer*innen vereinfachen, da sie in einigen Fällen Änderungen anhand der Basistabellen inkrementell berechnen können.
Materialisierte Sichten wurden erstmals mit der Einführung von Delta Live Tables in Azure Databricks unterstützt. Wenn Sie eine materialisierte Ansicht in einem Databricks SQL Warehouse erstellen, wird eine serverlose Pipeline erstellt, um Aktualisierungen in der materialisierten Ansicht zu verarbeiten. Sie können den Status der Aktualisierungsvorgänge in der Delta Live Tables UI oder der Pipelines-API überwachen. Weitere Informationen finden Sie unter Anzeigen des Status der Aktualisierung einer materialisierten Sicht.
Anforderungen
So erstellen oder aktualisieren Sie materialisierte Sichten:
Sie müssen ein Unity Catalog-fähiges Pro- oder serverloses SQL Warehouse verwenden.
Um eine materialisierte Sicht zu aktualisieren, müssen Sie sich im Arbeitsbereich befinden, in dem diese erstellt wurde.
Ihr Arbeitsbereich muss sich in einer Region befinden, die serverlose SQL-Warehouses unterstützt.
So fragen Sie materialisierte Sichten ab:
- Sie müssen Besitzerin oder Besitzer der materialisierten Sicht sein oder in der materialisierten Sicht
SELECT
sowieUSE SCHEMA
undUSE CATALOG
auf der übergeordneten Ebene haben. - Sie müssen eine der folgenden Computeressourcen verwenden:
- SQL-Warehouse
- Delta Live Tables-Interfaces
- Zugriffsmodus „Freigegeben“ für Compute
- Einzelbenutzerzugriffsmodus auf Databricks Runtime 15.4 und höher, solange der Arbeitsbereich für die serverlose Berechnung aktiviert ist. Weitere Informationen finden Sie unter Feinkornierte Zugriffssteuerung für die Berechnung einzelner Benutzer.
- Nur wenn Sie der materialisierte Ansichtsbesitzer sind: eine einzelne Benutzerzugriffsmodus-Computeressource, die Databricks Runtime zwischen 14.3 und 15.3 ausführt.
Informationen zu anderen Einschränkungen bei der Verwendung materialisierter Sichten finden Sie unter Einschränkungen.
Erstellen einer materialisierten Sicht
CREATE
-Vorgänge zum Erstellen einer materialisierten Databricks SQL-Sicht verwenden ein Databricks SQL-Warehouse, um Daten in der materialisierten Sicht zu erstellen und zu laden. Das Erstellen einer materialisierten Ansicht ist ein synchroner Vorgang, was bedeutet, dass der Befehl CREATE MATERIALIZED VIEW
zu einer Sperrung führt, bis die materialisierte Sicht erstellt und der anfängliche Datenladevorgang abgeschlossen ist. Für jede materialisierte Databricks SQL-Sicht wird automatisch eine serverlose Delta Live Tables-Pipeline erstellt. Wenn die materialisierte Sicht aktualisiert wird, verarbeitet die Delta-Live-Tabellen-Pipeline die Aktualisierung.
Zum Erstellen einer materialisierten Sicht verwenden Sie die Anweisung CREATE MATERIALIZED VIEW
. Verwenden Sie zum Übermitteln einer Erstellungsanweisung den SQL-Editor in der Azure Databricks-Benutzeroberfläche, die Databricks SQL CLI oder die Databricks SQL API.
Hinweis
Benutzer, die eine materialisierte Sicht erstellen, werden als Besitzer*innen der materialisierten Sicht zugewiesen und müssen über die folgenden Berechtigungen verfügen:
SELECT
-Berechtigung für die Basistabellen, auf die die materialisierte Sicht verweist.USE CATALOG
- undUSE SCHEMA
-Berechtigungen für den Katalog und das Schema, das die Quelltabellen für die materialisierte Sicht enthält.USE CATALOG
- undUSE SCHEMA
-Berechtigungen für den Zielkatalog und das Schema für die materialisierte Sicht.CREATE TABLE
- undCREATE MATERIALIZED VIEW
-Berechtigungen für das Schema, das die materialisierte Sicht enthält.
Im folgenden Beispiel wird anhand von Basistabelle base_table1
die materialisierte Sicht mv1
erstellt:
CREATE MATERIALIZED VIEW mv1
AS SELECT
date, sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;
Festlegen des Laufzeitkanals
Materialisierte Ansichten, die mit SQL-Lagerhäusern erstellt wurden, werden automatisch mithilfe einer Delta Live Tables-Pipeline aktualisiert. Delta Live Tables-Pipelines verwenden standardmäßig die Laufzeit im current
Kanal. Lesen Sie die Versionshinweise zu Delta Live Tables und den Prozess des Releaseupgrades, um mehr über den Veröffentlichungsprozess zu erfahren.
Databricks empfiehlt die Verwendung des current
Kanals für Produktionsworkloads. Neue Features werden zuerst im preview
Kanal veröffentlicht. Sie können eine Pipeline auf den Vorschaukanal Delta Live Tables festlegen, um neue Features zu testen, indem Sie als Tabelleneigenschaft angeben preview
. Sie können diese Eigenschaft angeben, wenn Sie die Tabelle erstellen oder nachdem die Tabelle mithilfe einer ALTER-Anweisung erstellt wurde.
Das folgende Codebeispiel zeigt, wie Sie den Kanal in einer CREATE-Anweisung auf eine Vorschau festlegen:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
Laden von Daten von externen Speicherorten
Databricks empfiehlt, externe Daten für unterstützte Datenquellen mithilfe von Lakehouse Federation zu laden. Informationen zum Laden von Daten aus Quellen, die von Lakehouse Federation nicht unterstützt werden, finden Sie unter Datenformatoptionen.
Aktualisieren einer materialisierten Sicht
Mit dem REFRESH
-Vorgang wird die materialisierte Sicht aktualisiert, um die neuesten Änderungen an der Basistabelle widerzuspiegeln. Der Vorgang ist standardmäßig synchron, d. h., der Befehl blockiert, bis der Aktualisierungsvorgang abgeschlossen ist. Zum Erstellen einer materialisierten Sicht verwenden Sie die REFRESH MATERIALIZED VIEW
-Anweisung. Ausführliche Informationen zur SQL-Syntax und zu den Parametern für diesen Befehl finden Sie unter AKTUALISIEREN (MATERIALISIERTE ANSICHT oder STREAMING TABELLE). Weitere Informationen zu den Typen materialisierter Ansichten, die inkrementell aktualisiert werden können, finden Sie unter Inkrementelle Aktualisierung für materialisierte Ansichten.
Verwenden Sie zum Übermitteln einer Aktualisierungsanweisung den SQL-Editor in der Azure Databricks-Benutzeroberfläche, ein an ein SQL-Warehouse angeschlossenes Notebook, die Databricks SQL CLI oder die Databricks SQL-API.
Nur Besitzer*innen können die materialisierte Sicht per REFRESH
-Anweisung aktualisieren.
Im folgenden Beispiel wird die materialisierte Sicht mv1
aktualisiert:
REFRESH MATERIALIZED VIEW mv1;
Wie werden materialisierte Databricks SQL-Sichten aktualisiert?
Materialisierte Sichten erstellen und verwenden serverlose Delta Live Tables-Pipelines automatisch, um Aktualisierungsvorgänge zu verarbeiten. Die Aktualisierung wird von der Delta Live Tables-Pipeline verwaltet, und das Update wird vom SQL-Warehouse von Databricks überwacht, das zum Erstellen der materialisierten Ansicht verwendet wird. Materialisierte Ansichten können mithilfe einer Delta Live Tables-Pipeline aktualisiert werden, die in einem Zeitplan ausgeführt wird. Siehe "Triggered vs. continuous pipeline mode".
Hinweis
Die Delta Live Tables-Runtime kann keine Änderungen in Nicht-Delta-Datenquellen erkennen. Die Tabelle wird weiterhin regelmäßig aktualisiert, jedoch mit einem höheren Standardtriggerintervall, um zu verhindern, dass übermäßige Neucomputation jegliche inkrementelle Verarbeitung im Compute verlangsamt.
Aktualisierungsvorgänge werden standardmäßig synchron ausgeführt. Sie können auch einen Aktualisierungsvorgang so festlegen, dass er asynchron ausgeführt wird. Dies kann mithilfe des Aktualisierungsbefehls festgelegt werden. Siehe REFRESH (MATERIALIZED VIEW or STREAMING TABLE) Das Verhalten, das den einzelnen Ansätzen zugeordnet ist, lautet wie folgt:
- Synchron: Eine synchrone Aktualisierung verhindert, dass andere Vorgänge fortgesetzt werden, bis die Aktualisierung abgeschlossen ist. Wenn das Ergebnis für den nächsten Schritt erforderlich ist, z. B. beim Sequenzieren von Aktualisierungsvorgängen in Orchestrierungstools wie Databricks-Aufträgen, verwenden Sie eine synchrone Aktualisierung. Um materialisierte Ansichten mit einem Auftrag zu koordinieren, verwenden Sie den SQL-Aufgabentyp . Weitere Informationen finden Sie unter Planen und Orchestrieren von Workflows.
- Asynchron: Eine asynchrone Aktualisierung startet einen Hintergrundauftrag für Delta Live Tables, der berechnet wird, wenn eine materialisierte Ansicht aktualisiert wird, sodass der Befehl zurückgegeben werden kann, bevor die Daten geladen werden. Dieser Aktualisierungstyp kann Kosten sparen, da der Vorgang nicht unbedingt Rechenkapazität im Lager enthält, in dem der Befehl initiiert wird. Wenn die Aktualisierung leer ist und keine anderen Aufgaben ausgeführt werden, kann das Lager heruntergefahren werden, während die Aktualisierung andere verfügbare Compute verwendet. Darüber hinaus unterstützen asynchrone Aktualisierungen das Starten mehrerer Vorgänge parallel.
Einige Abfragen können inkrementell aktualisiert werden. Siehe inkrementelle Aktualisierung für materialisierte Ansichten. Wenn keine inkrementelle Aktualisierung möglich ist, wird stattdessen eine vollständige Aktualisierung durchgeführt.
Planen der Aktualisierung materialisierter Sichten
Sie können eine materialisierte Databricks SQL-Sicht so konfigurieren, dass sie nach einem festgelegten Zeitplan automatisch aktualisiert wird. Führen Sie zum Festlegen eines Zeitplans eine der folgenden Aktionen aus:
- Konfigurieren des Zeitplans mit der
SCHEDULE
Klausel beim Erstellen der materialisierten Ansicht - Fügen Sie einen Zeitplan mit der MATERIALISIERTE ANSICHT ÄNDERN-Anweisung hinzu.
Beim Erstellen eines Zeitplans wird automatisch ein neuer Databricks-Auftrag konfiguriert, um die Aktualisierung zu verarbeiten.
Führen Sie zum Anzeigen des Zeitplans einen der folgenden Schritte aus:
- Führen Sie die
DESCRIBE EXTENDED
Anweisung aus dem SQL-Editor in der Azure Databricks-Benutzeroberfläche aus. - Verwenden Sie den Katalog-Explorer, um die materialisierte Ansicht anzuzeigen. Der Zeitplan wird auf der Registerkarte Übersicht unter Aktualisierungsstatus aufgeführt. Weitere Informationen finden Sie unter Was ist der Katalog-Explorer?.
Anzeigen des Status der Aktualisierung einer materialisierten Sicht
Hinweis
Da die Aktualisierungen materialisierter Sichten von einer Delta Live Tables-Pipeline verwaltet werden, kommt es durch die Startzeit für die Pipeline zu einer Wartezeit. Diese Wartezeit kann im Bereich von Sekunden bis hin zu Minuten liegen, zusätzlich zu der Zeit, die für die Aktualisierung benötigt wird.
Sie können den Status der Aktualisierung einer materialisierten Sicht einsehen, indem Sie die Pipeline anzeigen, die die materialisierte Sicht in der Delta Live Tables-Benutzeroberfläche verwaltet. Alternativ können Sie die Aktualisierungsinformationen anzeigen, die der DESCRIBE EXTENDED
-Befehl für die materialisierte Sicht zurückgibt.
Sie können den Aktualisierungsverlauf einer materialisierten Sicht auch einsehen, indem Sie das Ereignisprotokoll von Delta Live Tables abfragen. Weitere Informationen finden Sie unter Anzeigen des Aktualisierungsverlaufs für eine materialisierte Sicht.
Überwachen der Ausführung mithilfe des Abfrageverlaufs
Sie können die Abfrageverlaufsseite verwenden, um auf Abfragedetails und Abfrageprofile zuzugreifen, die Ihnen dabei helfen können, abfragen und Engpässe in der Delta Live Tables-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".
Wichtig
Dieses Feature befindet sich in der Public Preview. Arbeitsbereichsadministratoren und -administratorinnen können dieses Feature über die Seite Vorschau aktivieren. Weitere Informationen finden Sie unter Verwalten von Azure Databricks Previews.
Alle Anweisungen im Zusammenhang mit materialisierten Ansichten werden im Abfrageverlauf angezeigt. Sie können den Dropdownfilter "Anweisung " 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 Delta Live Tables-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 Anweisungen in der Abfrageverlaufs-UI zuzugreifen REFRESH
:
- Klicken Sie auf die linke Randleiste, um die Benutzeroberfläche für den Abfrageverlauf zu öffnen.
- Aktivieren Sie das Kontrollkästchen "AKTUALISIEREN" aus dem Dropdownfilter "Anweisung ".
- Klicken Sie auf den Namen der Abfrage-Anweisung, um Zusammenfassungsdetails wie die Dauer der Abfrage und aggregierte Metriken anzuzeigen.
- Klicken Sie auf " Abfrageprofil anzeigen", um das Abfrageprofil zu öffnen. Ausführliche Informationen zum Navigieren im Abfrageprofil finden Sie unter "Abfrageprofil".
- Optional können Sie die Verknüpfungen im Abschnitt "Abfragequelle " verwenden, um die zugehörige Abfrage oder Pipeline zu öffnen.
Hinweis
Ihre materialisierte Ansicht muss so konfiguriert werden, dass sie mit dem Vorschaukanal ausgeführt wird. Siehe Festlegen des Laufzeitkanals.
Siehe CREATE MATERIALIZED VIEW.
Anzeigen des Aktualisierungsstatus in der Delta Live Tables-Benutzeroberfläche
Standardmäßig ist die Delta Live Tables-Pipeline, die eine materialisierte Sicht verwaltet, in der Delta Live Tables-Benutzeroberfläche nicht sichtbar. Um die Pipeline in der Delta Live Tables-Benutzeroberfläche anzuzeigen, müssen Sie direkt auf den Link zur Seite Pipelinedetails der Pipeline zugreifen. So greifen Sie auf den Link zu:
- Kopieren Sie den Link, der in der Zeile Neueste Aktualisierung der von der Anweisung
DESCRIBE EXTENDED
zurückgegebenen Tabelle angezeigt wird, und fügen Sie ihn ein. - Klicken Sie auf der Registerkarte Herkunft der materialisierten Sicht auf Pipelines und dann auf den Link zur Pipeline.
Bei asynchronen REFRESH
Befehlen, die mit dem SQL-Editor in der Azure Databricks-Benutzeroberfläche übermittelt werden, können Sie den Aktualisierungsstatus anzeigen, indem Sie auf den im Ergebnisbereich gezeigten Link folgen.
Beenden einer aktiven Aktualisierung
Um eine aktive Aktualisierung in der Delta Live Tables-Benutzeroberfläche zu beenden, klicken Sie auf der Seite Pipelinedetails auf Beenden, um die Aktualisierung der Pipeline zu stoppen. Sie können die Aktualisierung auch über die Databricks CLI oder den Vorgang POST /api/2.0/pipelines/{pipeline_id}/stop in der Pipelines-API beenden.
Aktualisieren der Definition einer materialisierten Sicht
Um die Definition einer materialisierten Sicht zu aktualisieren, müssen Sie die materialisierte Sicht zunächst löschen und dann neu erstellen.
Löschen einer materialisierten Sicht
Hinweis
Um den Befehl zum Löschen einer materialisierten Sicht zu übermitteln, müssen Sie als Besitzer*in der materialisierten Sicht zugewiesen sein.
Verwenden Sie die Anweisung DROP VIEW, um eine materialisierte Sicht zu löschen. Zum Übermitteln einer DROP
-Anweisung können Sie den SQL-Editor in der Azure Databricks-Benutzeroberfläche, die Databricks SQL CLI oder die Databricks SQL-API verwenden. Im folgenden Beispiel wird die materialisierte Sicht mv1
gelöscht:
DROP MATERIALIZED VIEW mv1;
Beschreiben einer materialisierten Sicht
Um die Spalten und Datentypen für eine materialisierte Sicht abzurufen, verwenden Sie die Anweisung DESCRIBE
. Verwenden Sie DESCRIBE EXTENDED
, um die Spalten, Datentypen und Metadaten (z. B. Besitzer*in, Standort, Erstellungszeitpunkt und Aktualisierungsstatus) für eine materialisierte Sicht abzurufen. Verwenden Sie zum Übermitteln einer DESCRIBE
-Anweisung den SQL-Editor in der Azure Databricks-Benutzeroberfläche, die Databricks SQL CLI oder die Databricks SQL API.
Ändern des Besitzers einer materialisierten Sicht
Sie können den Besitzer einer materialisierten Ansicht ändern, wenn Sie sowohl ein Metastore-Administrator als auch ein Arbeitsbereichsadministrator sind. Materialisierte Ansichten erstellen und verwenden Delta Live Tables-Pipelines automatisch, um Änderungen zu verarbeiten. Führen Sie die folgenden Schritte aus, um den Besitzer einer materialisierten Ansicht zu ändern:
- Klicken Sie auf der Registerkarte Herkunft der materialisierten Sicht auf Pipelines und dann auf den Link zur Pipeline.
- Klicken Sie rechts neben dem Pipelinenamen auf das -Kebab-Menü, und klicken Sie dann auf Berechtigungen. Dadurch wird das Dialogfeld „Berechtigungen“ geöffnet.
- Klicken Sie auf x rechts neben dem Namen des aktuellen Besitzers, um den aktuellen Besitzer zu entfernen.
- Beginnen Sie mit der Eingabe, um die Liste der verfügbaren Benutzer zu filtern. Klicken Sie auf den Benutzer, welcher der neue Pipelinebesitzer sein soll.
- Klicken Sie auf Speichern, um Ihre Änderungen zu speichern und das Dialogfeld zu schließen.
Alle Pipelineressourcen, einschließlich materialisierter Sichten, die in der Pipeline definiert sind, gehören dem neuen Pipelinebesitzer. Alle zukünftigen Updates werden mit der Identität des neuen Besitzers ausgeführt.
Steuern des Zugriffs auf materialisierte Sichten
Materialisierte Sichten unterstützen umfassende Zugriffskontrollen, um die Datenfreigabe zu unterstützen und gleichzeitig die Offenlegung potenziell privater Daten zu vermeiden. Besitzer*innen einer materialisierten Sicht können anderen Benutzer*innen SELECT
-Berechtigungen gewähren. Benutzer*innen mit SELECT
-Zugriff auf die materialisierte Sicht benötigen keinen SELECT
-Zugriff auf die Tabellen, auf die die materialisierte Sicht verweist. Diese Zugriffskontrolle ermöglicht die Freigabe von Daten und steuert gleichzeitig den Zugriff auf die zugrunde liegenden Daten.
Gewähren von Berechtigungen für eine materialisierte Sicht
Verwenden Sie die GRANT
-Anweisung, um Zugriff auf eine materialisierte Sicht zu gewähren:
GRANT
privilege_type [, privilege_type ] ...
ON <mv_name> TO principal;
Es können folgende privilege_type-Werte angegeben werden:
SELECT
: Benutzer*innen können die materialisierte SichtSELECT
.REFRESH
: Benutzer*innen können die materialisierte SichtREFRESH
. Aktualisierungen werden mit den Rechten des Besitzers bzw. der Besitzerin ausgeführt.
Das folgende Beispiel erstellt eine materialisierte Sicht und gewährt einem Benutzer bzw. einer Benutzerin Auswahl- und Aktualisierungsberechtigungen:
CREATE MATERIALIZED VIEW <mv_name> AS SELECT * FROM <base_table>;
GRANT SELECT ON <mv_name> TO user;
GRANT REFRESH ON <mv_name> TO user;
Widerrufen von Berechtigungen für eine materialisierte Sicht
Verwenden Sie die Anweisung REVOKE
, um den Zugriff aus einer materialisierten Sicht zu widerrufen:
REVOKE
privilege_type [, privilege_type ]
ON <name> FROM principal;
Wenn den Besitzer*innen der materialisierten Sicht oder anderen Benutzer*innen, denen SELECT
-Berechtigungen für die materialisierte Sicht gewährt wurden, die SELECT
-Berechtigungen für eine Basistabelle entzogen werden oder die Basistabelle gelöscht wird, können die Besitzer*innen der materialisierten Sicht oder die Benutzer*innen, denen Zugriff gewährt wurde, die materialisierte Sicht weiterhin abfragen. Es kommt jedoch zu folgendem Verhalten:
- Die Besitzer*innen der materialisierten Sicht oder andere Benutzer*innen, die den Zugriff auf eine materialisierte Sicht verloren haben, können diese materialisierte Sicht nicht mehr über
REFRESH
aktualisieren, sodass die materialisierte Sicht nicht länger aktuell ist. - Wenn die Automatisierung per Zeitplan erfolgt, schlägt der nächste geplante
REFRESH
-Vorgang fehl oder wird nicht ausgeführt.
Im folgenden Beispiel wird mv1
die SELECT
-Berechtigung entzogen:
REVOKE SELECT ON mv1 FROM user1;
Aktivieren des Änderungsdatenfeeds
Der Datenfeed ist für die Basistabellen der materialisierten Sichten erforderlich, mit Ausnahme bestimmter erweiterter Anwendungsfälle. Wenn Sie den Datenfeed für eine Basistabelle aktivieren möchten, legen Sie die Eigenschaft der Tabelle delta.enableChangeDataFeed
mithilfe der folgenden Syntax fest:
ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Anzeigen des Aktualisierungsverlaufs für eine materialisierte Sicht
Um den Status von REFRESH
-Vorgängen in einer materialisierten Sicht anzuzeigen, einschließlich aktueller und vergangener Aktualisierungen, fragen Sie das Delta Live Tables-Ereignisprotokoll 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.
Weitere Informationen finden Sie unter Was ist das Delta Live Tables-Ereignisprotokoll?.
Einschränkungen
- Informationen zu Compute- und Arbeitsbereichsanforderungen finden Sie unter Anforderungen.
- Materialisierte Sichten unterstützen keine Identitätsspalten oder Ersatzschlüssel.
- Wenn eine materialisierte Sicht ein Summenaggregat über eine
NULL
-fähige Spalte verwendet und nurNULL
-Werte in dieser Spalte verbleiben, lautet der resultierende Aggregatwert der materialisierten Sicht 0 anstelle vonNULL
. - Sie können einen Datenänderungsfeed nicht aus einer materialisierten Ansicht lesen.
- Zeitreiseabfragen werden nicht für materialisierte Ansichten suportiert.
- Die zugrunde liegenden Dateien, die materialisierte Sichten unterstützen, können Daten aus Upstreamtabellen (einschließlich möglicher personenbezogener Informationen) enthalten, die in der Definition der materialisierten Sicht nicht angezeigt werden. Diese Daten werden automatisch zum zugrunde liegenden Speicher hinzugefügt, um die inkrementelle Aktualisierung materialisierter Sichten zu unterstützen. Da die zugrunde liegenden Dateien einer materialisierten Sicht möglicherweise das Risiko bergen, dass Daten aus Upstreamtabellen verfügbar gemacht werden, die nicht Teil des Schemas der materialisierten Sicht sind, empfiehlt Databricks, den zugrunde liegenden Speicher nicht für nicht vertrauenswürdige Downstreamconsumer freizugeben. Angenommen, die Definition einer materialisierten Sicht enthält eine Klausel
COUNT(DISTINCT field_a)
. Obwohl die Definition der materialisierten Sicht nur die AggregatklauselCOUNT DISTINCT
enthält, enthalten die zugrunde liegenden Dateien eine Liste der tatsächlichen Werte vonfield_a
.