この記事では、具体化された湖のビューに最適な更新を使用する場合に考慮するセマンティックな側面について説明し、具体化された湖のビューで使用できる更新モードの概要を説明します。
マテリアライズド・レイクビューのリフレッシュモード
最適な更新: このモードでは、具体化されたレイク ビューのパフォーマンスを最大限に高める最適な更新戦略 (増分、完全、または更新なし) が自動的に選択されます。
完全更新: このモードでは、具体化されたレイク ビューの完全な再計算が適用されます。
最適な更新
最適な更新は、Microsoft Fabric プラットフォームのデータ管理の効率、速度、およびコスト効率を向上させるために設計されています。 更新のパフォーマンスを最大化するために、最も適切な更新戦略が自動的に選択されます。 最適な更新では、次の更新ポリシーがサポートされます。
| ポリシーの更新 | Description |
|---|---|
| 増分更新 | 増分更新では、具体化されたレイク ビュー定義で参照されるソース内の変更されたデータのみが処理されます。 |
| 更新なし | ソースが変更されていない場合、つまり、差分コミットで変更が検出されなかった場合、サービスは更新をスキップします。 この動作により、不要な処理が保存されます。 |
| 完全更新 | 完全な更新では、ソースに変更が加えられたたびに、依存ソースのデータセット全体を評価する必要があります。 |
Important
増分更新を有効にするには、具体化されたレイク ビュー定義で参照されるすべての依存ソースに対してデルタ変更データ フィード (CDF) プロパティを delta.enableChangeDataFeed=true に設定する必要があります。 詳細については、 変更データ フィード プロパティを有効にする方法を参照してください。
最適な更新の利点
低コスト: コンピューティングとストレージの使用量が少なくなります。特に、データの変更が最小限で、差分コミットの変更が検出されない場合は、更新なしによってデータ更新がバイパスされます。
効率性の向上: 更新サイクルを短縮することで、より新しい分析情報を提供し、急速に変化するデータに対応できます。
時間の節約: 変更されたデータのみが処理され、更新期間が短縮されます。
インクリメンタル更新戦略において最適なリフレッシュを実現するためにサポートされる式
サポートされている式を使用して具体化されたレイク ビューを作成すると、Fabric は増分更新を実行できます。 サポートされていない式がクエリで使用されている場合は、変更に応じて、完全な更新または更新は実行されません。
次の表に、サポートされている式の概要を示します。
| SQL コンストラクト | 注釈 |
|---|---|
| SELECT 式 | 決定論的関数 (組み込み) を持つ式をサポートします。 非決定論的関数とウィンドウ関数は、完全な更新戦略につながります。 |
| FROM | |
| WHERE | 決定的な組み込み関数のみがサポートされています。 |
| INNER JOIN(内部結合) | |
| WITH | 共通テーブル式がサポートされています |
| UNION ALL | |
| データ品質の制約 | 制約では、確定的な組み込み関数のみがサポートされます。 |
注
最適な結果を得るには、サポートされている句のみを使用してクエリを設計します。 サポートされていないパターンを使用すると、完全な更新戦略への自動フォールバックがトリガーされます。
最適な更新のための重要なポイント
- 結果を最適化するには、増分更新戦略を適用できるように、クエリでサポートされている式を使用します。
- 増分更新は、追加のみのデータに対してサポートされています。 データに削除または更新が含まれている場合、Fabric は完全な更新を実行します。
- 具体化されたレイク ビュー定義でデータ品質制約を定義する場合、増分更新では更新時にそれらの制約が考慮され、適用されます。
- 最適な更新を使用するために特別に追加料金は適用されません。 更新操作中のコンピューティング使用量に基づいて課金されます。
- 小規模なソース データセットなどの場合、パフォーマンスの向上を考えると、Fabric は増分更新よりも完全な更新を選択する場合があります。
変更データフィードプロパティを有効にする方法
最適な更新を行うためには、すべての依存ソースで変更データ フィード (CDF) プロパティを有効にする必要があります。
次の例では、 CREATE ステートメントの使用を有効にする方法を示します。
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.customer_orders
TBLPROPERTIES (delta.enableChangeDataFeed=true)
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
または、ソース テーブル ALTER TABLE ステートメントを使用することもできます。
ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
例:
ALTER TABLE bronze.customers SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
最適な更新モードを有効にする方法
既定では、系列に対して最適な更新モードが有効になっています。 そうでない場合は、次の手順に従います。
完全更新
完全更新では、ソース データに基づいて具体化されたレイク ビューの完全な再計算が実行されます。
具体化されたレイク ビューでデータ全体を再処理する必要がある場合は、最適な更新トグルを無効にして完全更新モードに切り替えることができます。
または
具体化されたレイク ビューの完全な更新を実行するには、次のコマンドを使用します。
REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL
注
- ワークスペース名にスペースが含まれている場合は、バックティックで囲んでください。
`My Workspace`.lakehouse.schema.view_name - ソースとして非デルタ テーブルを使用する具体化されたレイク ビューを更新すると、完全な更新が開始されます。