在本文中,您將瞭解與 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 |
用於指定在違反限制時要採取的動作的參數。 可能的動作是 DROP 和 FAIL。 依預設,如果沒有此子句,動作為 FAIL。 |
PARTITIONED BY |
根據指定資料行建立分割區的參數。 |
TBLPROPERTIES |
用於標記具體化湖景定義的索引鍵/值組清單。 |
COMMENT |
描述具體化湖景的陳述。 |
AS select_statement |
查詢,以使用陳述式填 SELECT 入具體化湖景中的資料。 |
範例
下列範例說明透過將資料表與資料表聯customers_enriched結customers而命名的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使用者定義函數。 - 您無法使用暫存檢視來定義具體化的湖泊檢視。