Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel bietet die Spark SQL-Syntax zum Erstellen, Auflisten, Umbenennen und Löschen materialisierter Lake-Ansichten in Fabric.
Tipp
Informationen zum Erstellen Ihrer ersten materialisierten Seeansicht finden Sie unter "Erste Schritte mit materialisierten Seeblicken".
Erstellen einer materialisierten Seeansicht
Sie können einen materialisierten Seeblick von jedem Tisch oder aus einem anderen materialisierten Seeblick innerhalb eines Seehauses definieren.
Syntax
CREATE [OR REPLACE] MATERIALIZED LAKE VIEW [IF NOT EXISTS] [workspace.lakehouse.schema].MLV_Identifier
[(
CONSTRAINT constraint_name1 CHECK (condition expression1) [ON MISMATCH DROP | FAIL],
CONSTRAINT constraint_name2 CHECK (condition expression2) [ON MISMATCH DROP | FAIL]
)]
[PARTITIONED BY (col1, col2, ... )]
[COMMENT "description or comment"]
[TBLPROPERTIES ("key1"="val1", "key2"="val2", ... )]
AS select_statement
Hinweis
- Wenn der Arbeitsbereichsname Leerzeichen enthält, schließen Sie ihn in Backticks ein:
`My Workspace`.lakehouse.schema.view_name - Materialisierte Seeansichtsnamen sind ohne Berücksichtigung der Groß- und Kleinschreibung und werden in Kleinbuchstaben konvertiert (z. B.
MyTestViewwird zumytestview).
Arguments
| Parameter | BESCHREIBUNG |
|---|---|
OR REPLACE |
Überschreibt alle vorhandenen materialisierten Seeansichten mit demselben Namen. Kann nicht mit IF NOT EXISTS kombiniert werden. |
IF NOT EXISTS |
Erstellt die materialisierte Seeansicht nur, wenn sie noch nicht vorhanden ist. Die Ausführung wird fehlerfrei ausgeführt, wenn die Ansicht bereits definiert ist. Kann nicht mit OR REPLACE kombiniert werden. |
MLV_Identifier |
Name des materialisierten Seeblicks. Kann vollständig qualifiziert werden als workspace.lakehouse.schema.name. |
CONSTRAINT ... CHECK |
Definiert eine Datenqualitätsregel. Die CHECK Klausel gibt einen booleschen Ausdruck an, den jede Zeile erfüllen muss. Sie können mehrere Einschränkungen definieren. |
ON MISMATCH |
Aktion, die ausgeführt werden soll, wenn eine Zeile gegen eine Einschränkung verstößt.
DROP entfernt die Zeile stillschweigend; FAIL beendet die Aktualisierung mit einem Fehler. Der Standardwert ist FAIL. |
PARTITIONED BY |
Spalten, um die materialisierte Seeansicht zu partitionieren, durch die die Abfrageleistung für gefilterte Lesevorgänge verbessert werden kann. |
COMMENT |
Freitextbeschreibung, die mit der materialisierten Seeansichtsdefinition gespeichert ist. |
TBLPROPERTIES |
Schlüsselwertpaare, die als Metadaten in der materialisierten Seeansicht gespeichert sind. |
AS select_statement |
Die SELECT Abfrage, die die Daten in der materialisierten Seeansicht definiert. |
Examples
Im folgenden Beispiel wird eine materialisierte Seeansicht mit einer Datenqualitätseinschränkung, einem Kommentar und einer Partitionierung erstellt. Die OR REPLACE Klausel überschreibt alle vorhandenen Ansichten mit demselben Namen.
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
(
CONSTRAINT valid_quantity CHECK (quantity > 0) ON MISMATCH DROP
)
PARTITIONED BY (category)
COMMENT "Cleaned order data joined from products and orders"
AS SELECT
p.productID,
p.productName,
p.category,
o.orderDate,
o.quantity,
o.totalAmount
FROM bronze.products p INNER JOIN bronze.orders o
ON p.productID = o.productID
Im folgenden Beispiel wird eine einfachere materialisierte Seeansicht erstellt. Die IF NOT EXISTS Klausel verhindert einen Fehler, wenn die Ansicht bereits vorhanden ist, wodurch sie für Bereitstellungsskripts sicher ist.
CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.products_with_sales AS
SELECT
p.productID,
p.productName,
p.category,
CASE
WHEN COUNT(o.orderID) OVER (PARTITION BY p.productID) > 0 THEN TRUE
ELSE FALSE
END AS has_sales
FROM bronze.products p LEFT JOIN bronze.orders o
ON p.productID = o.productID
Tipp
Verwalten sie materialisierte Seeansicht von Ihrem Seehaus aus
Nachdem Sie Ihre materialisierten Lake-Ansichten erstellt haben, orchestrieren Sie deren Aktualisierung nicht von einem Notebook aus. Verwenden Sie stattdessen die beiden integrierten Funktionen im Seehaus:
- Linien: Fabric leitet die Abhängigkeitsreihenfolge zwischen den materialisierten Seeansichten anhand ihrer Definitionen ab. Um die Linienansicht zu öffnen, wählen Sie im Menüband die Registerkarte " Materialisierte Seeansichten " und dann " Verwalten" aus. Dort können Sie einen laufenden Durchlauf verfolgen und die vorgelagerten und nachgelagerten Abhängigkeiten für jede Ansicht prüfen.
- Geplante Aktualisierung: Erstellen Sie in derselben Ansicht "Verwalten " einen oder mehrere Zeitpläne, um alle materialisierten Seeansichten oder eine ausgewählte Teilmenge zu aktualisieren. Jeder Zeitplan wird unabhängig ausgeführt und aktualisiert Ansichten in der Reihenfolge ihrer Abhängigkeiten, sodass nachgelagerte Ansichten immer aktuelle Daten aus ihren vorgelagerten Ansichten lesen. Fabric werden vorübergehende Fehler für Sie erneut angezeigt.
Verwenden Sie Notizbücher, um die Definitionen Ihrer materialisierten Lake Views zu erstellen und iterativ zu verfeinern. Überlassen Sie Datenherkunft und geplanter Aktualisierung die Sortierung, Ausführung und Wiederholungsversuche – für zuverlässige, konsistente Daten mit weniger zu wartendem Code.
Abrufen einer Liste der materialisierten Seeansichten
Verwenden Sie die folgende Syntax, um die Liste aller materialisierten Seeansichten in einem Schema abzurufen:
SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;
So können Sie beispielsweise alle materialisierten Seeansichten im silver Schema auflisten:
SHOW MATERIALIZED LAKE VIEWS IN silver;
Abrufen der Anweisung, die eine materialisierte Seeansicht erstellt hat
Verwenden Sie die folgende Syntax, um die CREATE Anweisung für eine materialisierte Seeansicht abzurufen:
SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;
So rufen Sie z. B. die Definition von products_with_sales:
SHOW CREATE MATERIALIZED LAKE VIEW products_with_sales;
Aktualisieren einer materialisierten Seeansicht
Verwenden Sie den Befehl SELECT, um die Definition einer materialisierten Seeansicht (z. B. Abfrage, Einschränkungen oder Partitionierung) zu ändern. Alternativ können Sie die vorhandene Ansicht löschen und neu erstellen.
Umbenennen eines materialisierten Seeblicks
Verwenden Sie den ALTER MATERIALIZED LAKE VIEW Befehl, um eine vorhandene materialisierte Seeansicht umzubenennen. Die Syntax lautet:
ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;
Um z. B. Folgendes umzubenennen products_with_sales:
ALTER MATERIALIZED LAKE VIEW products_with_sales RENAME TO products_with_sales_v2;
Hinweis
Der ALTER MATERIALIZED LAKE VIEW Befehl wird nur für die Umbenennung unterstützt. Informationen zum Ändern der Definition oder anderer Eigenschaften (z. B. Abfrage SELECT , Einschränkungen oder Partitionierung) finden Sie unter Aktualisieren einer materialisierten Seeansicht.
Löschen einer materialisierten Seeansicht
Sie können eine materialisierte Seeansicht löschen, indem Sie die Option "Löschen " im Seehaus-Objekt-Explorer oder durch Ausführen eines DROP Befehls verwenden. Die Syntax lautet:
DROP MATERIALIZED LAKE VIEW MLV_Identifier;
Um products_with_sales zu löschen, gehen Sie zum Beispiel so vor:
DROP MATERIALIZED LAKE VIEW products_with_sales;
Hinweis
Das Ablegen oder Umbenennen einer materialisierten Seeansicht wirkt sich auf die Linienansicht und die geplante Aktualisierung aus. Achten Sie darauf, den Verweis in allen abhängigen materialisierten Seeansichten zu aktualisieren.
Aktuelle Einschränkungen
Die folgenden Einschränkungen gelten für die Spark SQL-Anweisungen für materialisierte Seeansichten:
-
Schemanamen – Schemanamen in Großbuchstaben (z. B
MYSCHEMA. ) werden nicht unterstützt. Verwenden Sie gemischte Groß- oder Kleinschreibung. -
Keine Anweisungen der Datenmanipulationssprache (Data Manipulation Language, DML) – Sie können keine
INSERT,UPDATEoderDELETEAnweisungen gegen eine materialisierte Seeansicht ausführen. Daten werden nur durch dieSELECTAbfrage in der Definition aufgefüllt. -
Keine Zeitreiseabfragen – In der Abfrage innerhalb einer materialisierten Lake-View-Definition kann keine Delta-Lake-Zeitreisesyntax (z.B.
SELECToder ) verwendet werden. -
Keine benutzerdefinierten Funktionen – Benutzerdefinierte Funktionen (USER-Defined Functions, UDFs) werden in der
SELECTAbfrage, die eine materialisierte Seeansicht definiert, nicht unterstützt. -
Keine temporären Ansichten als Quellen – Die
SELECTAbfrage kann auf Tabellen und andere materialisierte Seeansichten verweisen, aber keine temporären Ansichten. -
Spark-Eigenschaften auf Sitzungsebene – Spark-Konfigurationseigenschaften , die auf Sitzungsebene (z. B. ) festgelegt sind,
spark.conf.set(...)werden während einer geplanten Aktualisierung nicht angewendet. Legen Sie stattdessen Eigenschaften auf Seehaus- oder Arbeitsbereichsebene fest.