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 enthält die Spark SQL-Syntax zum Erstellen, Auflisten, Umbenennen und Löschen materialisierter Seeansichten in Microsoft 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
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
Sie können die Definition einer materialisierten Seeansicht nicht direkt aktualisieren. Um die SELECT Abfrage, Einschränkungen oder Partitionierung zu ändern, löschen Sie die vorhandene Ansicht, und erstellen Sie eine neue.
Die einzige Eigenschaft, die Sie auf einem vorhandenen materialisierten Seeblick (via ALTER) aktualisieren können, ist der Name. 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;
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.
VERSION AS OFoderTIMESTAMP AS OF) 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.