この記事では、Microsoft Fabric の具体化されたレイク ビューに関連するアクティビティの Spark SQL 構文について説明します。
具体化された湖のビューを作成する
具体化された湖のビューは、任意のテーブルから、またはレイクハウス内の別の具体化された湖のビューから定義できます。 次のコードでは、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
論争
| パラメーター | 説明 |
|---|---|
MLV_Identifier |
可視化された湖の景観の名前。 |
CONSTRAINT |
データ品質制約を定義するキーワード。その後にユーザー定義名が続きます。 この制約は、具体化された湖のビューのレベルで適用されます。 |
CHECK |
特定の列値に基づいて条件を適用するためのパラメーター。 制約を定義するときに使用する必要があります。 |
ON MISMATCH |
制約に違反した場合に実行するアクションを指定するためのパラメーター。 考えられるアクションは、 DROP と FAILです。 既定では、この句を指定しない場合、アクションは FAIL。 |
PARTITIONED BY |
指定した列に基づいてパーティションを作成するためのパラメーター。 |
TBLPROPERTIES |
具体化されたレイク ビューの定義にタグを付けるキーと値のペアの一覧。 |
COMMENT |
具体化された湖のビューを記述するステートメント。 |
AS select_statement |
SELECT ステートメントを使用して、具体化されたレイク ビュー内のデータを設定するクエリ。 |
例示
次の例は、置換構文を使用した具体化されたレイク ビューの定義を示しています。
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
次の例は、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;
注
- ワークスペース名にスペースが含まれている場合は、バックティックで囲んでください。
`My Workspace`.lakehouse.schema.view_name - 具体化されたレイク ビュー名では大文字と小文字が区別されず、小文字に変換されます (たとえば、
MyTestViewはmytestviewになります)。
次の例では、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;
具体化された湖のビューを削除する
具体化されたレイク ビューを削除するには、lakehouse オブジェクト エクスプローラーの [削除 ] オプションを使用するか、ノートブックで次のコマンドを実行します。
DROP MATERIALIZED LAKE VIEW MLV_Identifier;
次に例を示します。
DROP MATERIALIZED LAKE VIEW customers_enriched;
注
具体化されたレイク ビューの削除または名前変更は、系列ビューとスケジュールされた更新に影響します。 依存するすべてのマテリアライズド レイクビューの参照を必ず更新してください。
現在の制限
- すべての大文字を持つスキーマ名はサポートされていません。 スキーマ名のすべての大文字を使用せずに、具体化されたレイク ビューを作成し続けることができます。
- セッション レベルで設定された Spark プロパティは、スケジュールされた系列の更新中には適用されません。
- デルタタイムトラベルを使用したマテリアライズドレイクビューの作成はサポートされていません。
- 具体化されたレイク ビューでは、データ操作言語 (DML) ステートメントはサポートされていません。
-
CREATE TABLE AS SELECT(CTAS) ステートメントのユーザー定義関数はサポートされていません。 - 一時ビューを使用して具体化された湖のビューを定義することはできません。