パフォーマンスと信頼性を向上させるために、Dataflow Gen2 はステージング項目を使用して、データ変換中に中間データを格納します。 この記事では、ステージング項目とは何か、ステージで 1 回ロックを解除する ELT パターン 、多数 のモデルを参照し、保持するデータを管理する方法について説明します。
ステージング項目とは
ステージング項目は、データ変換中にデータを格納するために Dataflow Gen2 によって使用される中間データ ストレージの場所です。 これらの項目には、"DataflowsStagingLakehouse" と "DataflowsStagingWarehouse" という名前が付けられます。 ステージング項目は、パフォーマンスを向上させるために、データ変換中に中間データを格納するために使用されます。 これらの項目は、最初のデータフローを作成するときに自動的に作成され、Dataflow Gen2 によって管理されます。 これらの項目はワークスペース内のユーザーには表示されませんが、データの取得や Lakehouse エクスプローラーなどの他のエクスペリエンスで表示される場合があります。 ステージング項目内のデータには、予期しない動作が発生する可能性があるため、直接アクセスまたは変更しないことを強くお勧めします。 また、ステージング項目に自分でデータを格納することはサポートされていないため、データが失われる可能性があります。
ELT パターン: 一度ステージングして、複数回参照
ステージングでは、中間ストレージを提供するだけでなく、1 つの基盤 ( ステージ 1 回、多数を参照) に基づいて構築された一連の ELT パターンのロックが解除されます。 ソース クエリはステージング済みとしてマークされるため、出力は内部ステージング ストレージに具体化されます。 その後、ダウンストリーム クエリは、ソースを再読み取りするのではなく、そのステージング クエリを参照します。 高速コピーはオプションのアクセラレータであり、ステージングクエリの処理速度を速めますが、それがパターンを定義するものではありません。
データがステージングされると、ダウンストリーム クエリで次のことができるため、このパターンは重要です。
- インデックスされクエリ可能なコピーに対して、元のソースに再アクセスせずに実行します。
- マッシュアップ エンジンで実行するのではなく、フィルター、結合、集計をステージング SQL エンドポイントに折り返します。
- 1 つの具体化された結果から複数の並列変換または変換先に分岐します。
一般的なユース ケース
通常、次のパターンは、ステージング されたソース クエリの上に階層化されます。
| 利用シーン | Description |
|---|---|
| ステージング データを分析モデルに整形する | 参照されたクエリは、重複除去、グループ化、キー生成を通じて、ファクト テーブル、ディメンション テーブル、概要、ロールアップ、または KPI にステージング されたデータを整形します。 |
| フォールドダウン コンピューティング プッシュダウン | ステージング データに対して記述された参照クエリは、結合、フィルター、およびグループ化操作をステージング SQL エンドポイントにフォールドし、マッシュアップ エンジンではなくウェアハウス エンジンにコンピューティングをプッシュします。 多くの場合、これはステージングによって得られる最大のパフォーマンス向上です。 |
| データ品質管理と監査部 | 参照されるクエリは、ソースを再読み取りすることなく、ステージング されたデータ (null チェック、制約検証、行数) を検証または検査します。 |
| 複数の宛先へのファンアウト | 複数の参照されるクエリは、それぞれが同じステージング ソース (たとえば、1 つの Lakehouse と 1 つの Warehouse) から異なる宛先を読み込みます。 |
| Stage-then-merge | 各ソースは独自のクエリでステージングされ、ダウンストリーム参照クエリによってステージングされた結果がマージまたは結合され、結合がステージング SQL エンドポイントに折り返されます。 |
ステージングが適切でない場合
ステージングでは、ダウンストリーム クエリを実行する前に、ストレージ コストと追加の書き込みが追加されます。 次の場合はスキップすることを検討してください。
- あなたの変換は、すでにソースシステムまでエンドツーエンドで統合済みで、マッシュアップエンジンでの計算は発生しません。
- データフローには 1 つの出力があり、ダウンストリームの分岐、検証、またはファンアウトはありません。
- ソースの待機時間がボトルネックであり、ステージングを通じてソースを並列化することはできません。
ステージングを有効または無効にするタイミングの詳細については、「 Dataflow Gen2 で最適なパフォーマンスを得るためのベスト プラクティス」を参照してください。
ステージング項目内のデータ
ステージング項目は、ユーザーによる直接アクセス用に設計されていません。 Dataflow Gen2 はステージング項目のデータを管理し、データが一貫した状態であることを確認します。 ステージング項目内のデータへの直接アクセスはサポートされていません。データが一貫した状態であることが保証されるわけではありません。 ステージング項目のデータにアクセスする必要がある場合は、Power BI、Excel、またはその他のデータフローでデータフロー コネクタを使用できます。
Important
ダウンストリーム コンシューマーにステージング データを提供する内部 API (データフロー コネクタを使用したセマンティック モデルやその他のデータフローなど) では、断続的なタイムアウトが発生する可能性があります。 これらのタイムアウトにより、アイテムの使用で更新エラーが発生する可能性があります。多くの場合、"キーがテーブル内の行と一致しませんでした" というエラーが表示されます。このエラーは、データの問題を示していません。 これは、バックエンドが段階的な結果を時間内に取得できなかったことを意味します。
推奨される回避策: データフローの データ変換先 (Lakehouse または Warehouse) を構成し、Lakehouse または Warehouse コネクタを使用して直接その宛先から読み取るダウンストリーム項目を更新します。 これにより、内部ステージング API がバイパスされ、更新の信頼性が向上します。
詳細については、「 Data Factory の制限事項」を参照してください。
ステージング項目からのデータの削除は、次のいずれかのアクションによって強制できます。
- データフローのステージングを無効にして、データを再読み込みします (30日後にデータがガベージコレクションされます)。
- データフローを削除します (データを直接削除します)。
- ワークスペースを削除します (StagingLakehouse と StagingWarehouse を直接削除します)。
ステージングのコストへの影響
ステージング Lakehouse とステージング ウェアハウスは、データフロー処理の一部として中間データを格納します。 これらのステージング項目によって使用されるストレージは、OneLake ストレージの一部として課金されます。 つまり、ステージング項目に格納されているデータは、OneLake ストレージの全体的な消費量と関連するコストにカウントされます。
ストレージ コストを効果的に管理するには:
- ステージング ストレージの使用状況を監視する: ステージング データは、ガベージ コレクションまたは明示的に削除されるまで、データフローの更新ごとに蓄積されます。
- 必要がないときにステージングを無効にする: 変換がソース システムにフォールドされる場合は、ステージングを有効にする必要がない可能性があります。 ステージングを無効にすると、ストレージの使用量が削減されます。
- 未使用のデータフローをクリーンアップする: 不要になったデータフローを削除すると、関連するステージング データがすぐに削除されます。
- 更新頻度の検討: ステージングを有効にして頻繁に更新すると、ストレージの消費量が増加する可能性があります。 パフォーマンス上の利点とストレージ コストのバランスを取ります。
OneLake ストレージの価格の詳細については、「 Microsoft Fabric の価格」を参照してください。