共用方式為


具體化湖檢視的 Spark SQL 參考

在本文中,您將瞭解與 Microsoft Fabric 中具體化湖檢視相關的活動的 Spark SQL 語法。

建立具體化的湖景

您可以從任何資料表或湖屋內的另一個具體化湖景定義具體化湖景。 下列程式碼概述使用 Spark SQL 宣告具體化湖景的語法:

CREATE 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

參數 說明
MLV_Identifier 具象化湖景的名稱。
CONSTRAINT 用來定義數據品質條件約束的關鍵詞,後面接著使用者定義的名稱。 限制會套用在具體化的湖景層級。
CHECK 根據特定資料行值強制執行條件的參數。 定義條件約束時必須使用。
ON MISMATCH 用於指定在違反限制時要採取的動作的參數。 可能的動作是 DROPFAIL。 依預設,如果沒有此子句,動作為 FAIL
PARTITIONED BY 根據指定資料行建立分割區的參數。
TBLPROPERTIES 用於標記具體化湖景定義的索引鍵/值組清單。
COMMENT 描述具體化湖景的陳述。
AS select_statement 查詢,以使用陳述式填 SELECT 入具體化湖景中的資料。

範例

下列範例說明透過將資料表與資料表聯customers_enrichedcustomers而命名的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; 

下列範例定義名為 的具體化湖景 customers_enriched,以資料行分割 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; 

取得具體化的湖景清單

若要取得湖屋中所有具體化湖景的清單,請使用下列命令:

SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;

以下為範例:

SHOW MATERIALIZED LAKE VIEWS IN silver;

擷取建立具體化湖景的陳述式

若要取得 CREATE 具體化湖景的陳述式,請使用下列命令:

SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;

以下為範例:

SHOW CREATE MATERIALIZED LAKE VIEW customers_enriched;

更新具現化資料湖視圖

若要更新具體化湖景的定義,您必須捨棄它並重新建立它。 此 ALTER 陳述式僅支援重新命名具體化的湖景。

ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;

以下為範例:

ALTER MATERIALIZED LAKE VIEW customers_enriched RENAME TO customers_enriched_new;

刪除實體化湖視圖

您可以使用湖屋物件總管中的 [刪除] 選項,或在筆記本中執行下列命令,卸除具體化的湖景:

DROP MATERIALIZED LAKE VIEW MLV_Identifier;

以下為範例:

DROP MATERIALIZED LAKE VIEW customers_enriched;

備註

卸除或重新命名具體化湖檢視會影響譜系檢視和排程重新整理。 請務必更新所有相依具體化湖景中的參考。

目前的限制

  • 不支援全為大寫字母的結構描述名稱。 您可以繼續建立具體化的湖景,而不使用結構描述名稱中的所有大寫字母。
  • 在工作階段層級設定的 Spark 屬性不會在排程的譜系重新整理期間套用。
  • 不支援建立具有 delta 時間旅行的具體化湖景。
  • 具體化湖檢視不支援資料操作語言 (DML) 陳述式。
  • 不支援 (CTAS) 陳述式中的 CREATE TABLE AS SELECT 使用者定義函數。
  • 您無法使用暫存檢視來定義具體化的湖泊檢視。