Udostępnij przez


Dokumentacja języka Spark SQL dla zmaterializowanych widoków lake

W tym artykule przedstawiono składnię Spark SQL dotyczącą działań związanych z zmaterializowanymi widokami lake w usłudze Microsoft Fabric.

Tworzenie zmaterializowanego widoku jeziora

Zmaterializowany widok jeziora można zdefiniować z dowolnej tabeli lub z innego zmaterializowanego widoku jeziora w obrębie lakehouse. Poniższy kod pokazuje, jak zadeklarować zmaterializowany widok jeziora przy użyciu Spark SQL.

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 

Arguments

Parametr Opis
MLV_Identifier Nazwa zmaterializowanego widoku jeziora.
CONSTRAINT Słowo kluczowe definiujące ograniczenie jakości danych, a następnie nazwę zdefiniowaną przez użytkownika. Ograniczenie ma zastosowanie na poziomie zmaterializowanego widoku jeziora.
CHECK Parametr wymuszający warunek na podstawie określonych wartości kolumn. Obowiązkowe do użycia podczas definiowania ograniczenia.
ON MISMATCH Parametr określający akcję do wykonania, jeśli ograniczenie zostanie naruszone. Możliwe akcje to DROP i FAIL. Domyślnie bez tej klauzuli akcja to FAIL.
PARTITIONED BY Parametr tworzenia partycji na podstawie określonej kolumny.
TBLPROPERTIES Lista par klucz/wartość do tagowania definicji zmaterializowanego widoku jeziora.
COMMENT Oświadczenie opisujące zmaterializowany widok jeziora.
AS select_statement Wykonaj zapytanie w celu wypełnienia danych w zmaterializowanym widoku lake przy użyciu instrukcji SELECT .

Przykłady

Poniższy przykład ilustruje definicję zmaterializowanego widoku jeziora przy użyciu składni replace:

CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.customer_orders AS
SELECT 
    c.customerID,
    c.customerName,
    c.region,
    o.orderDate,
    o.orderAmount
FROM bronze.customers c INNER JOIN bronze.orders o
ON c.customerID = o.customerID

W poniższym przykładzie przedstawiono definicję zmaterializowanego widoku lake o nazwie customers_enriched , łącząc tabelę customers z tabelą orders :

CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.customers_enriched AS 
SELECT 
    c.customerID, 
    c.customerName, 
    c.contact, 
    CASE  
       WHEN COUNT(o.orderID) OVER (PARTITION BY c.customerID) > 0 THEN TRUE  
       ELSE FALSE  
       END AS has_orders 
FROM bronze.customers c LEFT JOIN bronze.orders o 
ON c.customerID = o.customerID; 

Uwaga / Notatka

  • Jeśli nazwa obszaru roboczego zawiera spacje, umieść ją w apostrofach: `My Workspace`.lakehouse.schema.view_name
  • Zmaterializowane nazwy widoków jeziora są traktowane jako case-insensitive, co oznacza, że jest ignorowana wielkość liter i są konwertowane na małe litery (np. MyTestView staje się mytestview)

W poniższym przykładzie zdefiniowano materializowany widok jeziora o nazwie customers_enriched, podzielony według kolumny city.

CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.customers_enriched 
COMMENT "This is a sample materialized lake view" 
PARTITIONED BY (city)
AS SELECT 
     c.customerID, 
     c.customerName, 
     c.contact, 
     CASE  
        WHEN COUNT(o.orderID) OVER (PARTITION BY c.customerID) > 0 THEN TRUE  
        ELSE FALSE  
        END AS has_orders 
FROM bronze.customers c LEFT JOIN bronze.orders o 
ON c.customerID = o.customerID; 

Pobieranie listy zmaterializowanych widoków jeziora

Aby uzyskać listę wszystkich zmaterializowanych widoków jeziora w lakehouse, użyj następującego polecenia:

SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;

Oto przykład:

SHOW MATERIALIZED LAKE VIEWS IN silver;

Pobierz zapytanie, które utworzyło zmaterializowany widok jeziora

Aby uzyskać instrukcję CREATE dla zmaterializowanego widoku jeziora, użyj następującego polecenia:

SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;

Oto przykład:

SHOW CREATE MATERIALIZED LAKE VIEW customers_enriched;

Aktualizowanie zmaterializowanego widoku jeziora

Aby zaktualizować definicję zmaterializowanego widoku jeziora, należy go usunąć i ponownie go utworzyć. Instrukcja jest obsługiwana ALTER tylko w przypadku zmiany nazwy zmaterializowanego widoku jeziora.

ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;

Oto przykład:

ALTER MATERIALIZED LAKE VIEW customers_enriched RENAME TO customers_enriched_new;

Zrezygnuj z materializowanego widoku jeziora

Zmaterializowany widok jeziora można usunąć przy użyciu opcji Usuń w eksploratorze obiektów lakehouse lub uruchamiając następujące polecenie w notesie:

DROP MATERIALIZED LAKE VIEW MLV_Identifier;

Oto przykład:

DROP MATERIALIZED LAKE VIEW customers_enriched;

Uwaga / Notatka

Usunięcie lub zmiana nazwy widoku jeziora zmaterializowanego wpływa na widok pochodzenia oraz harmonogram odświeżania. Pamiętaj, aby zaktualizować odwołanie we wszystkich zależnych zmaterializowanych widokach jeziora.

Bieżące ograniczenia

  • Nazwy schematów ze wszystkimi wielkimi literami nie są obsługiwane. Możesz nadal tworzyć zmaterializowane widoki jeziora bez używania wszystkich wielkich liter w nazwie schematu.
  • Właściwości Spark ustawione na poziomie sesji nie są stosowane podczas zaplanowanego odświeżania linii danych.
  • Tworzenie zmaterializowanego widoku jeziora z podróżą czasową delta nie jest obsługiwane.
  • Instrukcje języka DML (Data Manipulation Language) nie są obsługiwane w przypadku zmaterializowanych widoków lake.
  • Funkcje zdefiniowane przez użytkownika w CREATE TABLE AS SELECT instrukcjach (CTAS) nie są obsługiwane.
  • Nie można użyć widoków tymczasowych do zdefiniowania zmaterializowanych widoków jeziora.