Direct Lake の概要
Direct Lake は、Microsoft Fabric ワークスペースに格納されている Power BI セマンティック モデル内のテーブルのストレージ モード オプションです。 これは、すべての分析データの単一ストアである OneLake の Parquet ファイルにデータを格納する Delta テーブルからメモリにすばやく読み込むことができる大量のデータ用に最適化されています。 メモリに読み込まれると、セマンティック モデルによって高パフォーマンスクエリが可能になります。 Direct Lake を使用すると、データをモデルにインポートする必要が遅くなり、コストがかかる必要がなくなります。
Direct Lake ストレージ モードを使用して、1 つの Fabric Lakehouse または Fabric ウェアハウスのテーブルまたはビューに接続できます。 これらの Fabric 項目と Direct Lake セマンティック モデルの両方に、Fabric 容量ライセンスが必要です。
いくつかの点で、Direct Lake セマンティック モデルはインポート セマンティック モデルに似ています。 これは、モデル データが高速クエリ パフォーマンスのために VertiPaq エンジンによってメモリに読み込まれるためです (DirectQuery フォールバックの場合を除き、この記事の後半で説明します)。
ただし、Direct Lake セマンティック モデルは、重要な点でインポート セマンティック モデルとは異なります。 これは、Direct Lake セマンティック モデルの更新操作は、インポート セマンティック モデルの更新操作とは概念的に異なるためです。 Direct Lake セマンティック モデルの場合、更新にはフレーミング操作 (この記事で後述) が含まれます。完了するまでに数秒かかる場合があります。 これは、セマンティック モデルが最新バージョンの Delta テーブルのメタデータを分析し、OneLake の最新ファイルを参照するように更新される低コストの操作です。 これに対し、インポート セマンティック モデルでは、更新によってデータのコピーが生成されます。データのコピーにはかなりの時間がかかり、大量のデータ ソースと容量リソース (メモリと CPU) が消費される可能性があります。
Note
インポート セマンティック モデルの増分更新 は、更新時間と容量リソースの使用を減らすのに役立ちます。
Direct Lake ストレージ モードを使用する必要がある場合
Direct Lake ストレージ モードの主なユース ケースは、通常、湖中心のアーキテクチャを活用する IT 主導の分析プロジェクト用です。 このシナリオでは、OneLake に大量のデータが存在するか、または蓄積される予定です。 このユース ケースでは、メモリへのデータの高速読み込み、頻繁で高速な更新操作、容量リソースの効率的な使用、高速なクエリ パフォーマンスがすべて重要です。
Note
インポートと DirectQuery のセマンティック モデルは Fabric でも引き続き関連しており、一部のシナリオではセマンティック モデルの適切な選択肢です。 たとえば、インポート ストレージ モードは、多くの場合、IT に依存せずに新しいデータ要素を追加する自由と機敏性を必要とするセルフサービス アナリストに適しています。
また、OneLake 統合では、インポート ストレージ モードのテーブルのデータが、移行作業を必要とせずに OneLake の Delta テーブルに自動的に書き込まれます。 このオプションを使用すると、ショートカット、SQL クエリ、ノートブックなどを使用した Lakehouse との統合など、セマンティック モデル ユーザーのインポートで使用できる Fabric の利点の多くを実現できます。 このオプションは、既存のデータ ウェアハウスや分析システムを必ずしもまたはすぐに設計し直さなくても、Fabric の利点をすばやく得る方法として検討することをお勧めします。
Direct Lake ストレージ モードは、データの待機時間を最小限に抑えて、ビジネス ユーザーがデータをすばやく使用できるようにするためにも適しています。 Delta テーブルが断続的に変更されている場合 (およびデータ レイクでデータ準備が既に完了していると仮定した場合)、それらの変更に応じて自動更新を再フレームに依存できます。 この場合、セマンティック モデルに送信されたクエリは最新のデータを返します。 この機能は、Power BI レポートの ページ の自動更新機能と連携して適切に機能します。
Direct Lake は、データ レイクで行われるデータ準備に依存します。 データ準備は、Fabric Lakehouse の Spark ジョブ、Fabric ウェアハウス用の T-SQL DML ステートメント、データフロー、パイプラインなど、さまざまなツールを使用して行うことができます。 このアプローチは、再利用性を最大化するために、データ準備ロジックがアーキテクチャで可能な限り低く実行されるようにするのに役立ちます。 ただし、セマンティック モデルの作成者がソース項目を変更できない場合 (たとえば、IT によって管理されている Lakehouse に対する書き込みアクセス許可がないセルフサービス アナリストの場合)、インポート ストレージ モードが適している可能性があります。 これは、セマンティック モデルの一部として定義されている Power Query を使用したデータ準備をサポートしているためです。
Direct Lake ストレージ モードを検討するときは、現在の Fabric 容量ライセンスと Fabric 容量ガードレールを考慮してください。 また、この記事で後述する 考慮事項と制限事項を考慮してください。
Direct Lake のしくみ
通常、Direct Lake セマンティック モデルに送信されるクエリは、Delta テーブルからソース化された列のメモリ内キャッシュから処理されます。 Delta テーブルの基になるストレージは、OneLake 内の 1 つ以上の Parquet ファイルです。 Parquet ファイルは、行ではなく列ごとにデータを整理します。 セマンティック モデルは、クエリで必要とされるため、Delta テーブルの列全体をメモリに読み込みます。
Direct Lake セマンティック モデルでは、DirectQuery フォールバックを使用することもできます。これには、DirectQuery モードにシームレスに切り替える必要があります。 DirectQuery フォールバックは、Lakehouse またはウェアハウスの SQL 分析エンドポイントから直接データを取得します。 たとえば、差分テーブルに Fabric の容量でサポートされているよりも多くのデータ行が含まれている場合にフォールバックが発生する可能性があります (この記事で後述 )。 この場合、DirectQuery 操作は SQL 分析エンドポイントにクエリを送信します。 フォールバック操作により、クエリのパフォーマンスが低下する可能性があります。
次の図は、Power BI レポートを開くユーザーのシナリオを使用して Direct Lake がどのように動作するかを示しています。
この図は、次のユーザー アクション、プロセス、機能を示しています。
アイテム | 説明 |
---|---|
OneLake は、Parquet 形式で分析データを格納するデータ レイクです。 このファイル形式は、 Direct Lake セマンティック モデルのデータを格納するために最適化されています 。 | |
Fabric Lakehouse または Fabric ウェアハウスは、Fabric 容量上のワークスペースに存在します。 Lakehouse には SQL 分析エンドポイントがあり、クエリ用の SQL ベースのエクスペリエンスを提供します。 テーブル (またはビュー) は、Transact-SQL (T-SQL) を使用して OneLake の Delta テーブルに対してクエリを実行する手段を提供します。 | |
Direct Lake セマンティック モデルは、Fabric ワークスペースに存在します。 これは、レイクハウスまたは倉庫のテーブルまたはビューに接続します。 | |
ユーザーが Power BI レポートを開きます。 | |
Power BI レポートは、データ分析式 (DAX) クエリを Direct Lake セマンティック モデルに送信します。 | |
可能な場合 (および必要な場合)、セマンティック モデルは、OneLake に格納されている Parquet ファイルから直接列をメモリに読み込みます。 クエリはメモリ内のパフォーマンスを実現します。これは非常に高速です。 | |
セマンティック モデルはクエリ結果を返します。 | |
Power BI レポートによってビジュアルが表示されます。 | |
セマンティック モデルが容量のガードレールを超える場合など、特定の状況では、セマンティック モデル クエリは DirectQuery モードに自動的にフォールバックします。 このモードでは、クエリはレイクハウスまたはウェアハウスの SQL 分析エンドポイントに送信されます。 | |
SQL 分析エンドポイントに送信された DirectQuery クエリは、OneLake の Delta テーブルに対してクエリを実行します。 このため、クエリのパフォーマンスはメモリ内クエリよりも遅くなる可能性があります。 |
以降のセクションでは、列の読み込み、フレーミング、自動更新、DirectQuery フォールバックなど、Direct Lake の概念と機能について説明します。
列の読み込み (コード変換)
Direct Lake セマンティック モデルは、初めて列のクエリを実行するときに OneLake からのデータのみを読み込みます。 OneLake からオンデマンドでデータを読み込むプロセスは、コード変換と呼ばれます。
セマンティック モデルは、DAX (または多次元式 - MDX) クエリを受け取ると、最初にクエリ結果を生成するために必要な列を決定します。 必要な列には、クエリによって直接使用される列と、リレーションシップとメジャーに必要な列も含まれます。 通常、クエリ結果を生成するために必要な列の数は、セマンティック モデルで定義されている列の数よりもはるかに少なくなります。
必要な列が認識されると、セマンティック モデルによって、既にメモリ内にある列が決定されます。 クエリに必要な列がメモリ内にない場合、セマンティック モデルは OneLake からそれらの列のすべてのデータを読み込みます。 通常、列データの読み込みは非常に高速な操作ですが、列に格納されているデータのカーディナリティなどの要因によって異なります。
その後 、メモリに読み込まれた列はメモリに格納 されます。 常駐列のみを含む今後のクエリでは、これ以上列をメモリに読み込む必要はありません。
列は、メモリから削除 (削除) される理由が存在するまで常駐状態のままになります。 列が削除される理由は次のとおりです。
- モデルまたはテーブルが更新されました (次のセクションの「フレーミング」を参照)。
- しばらくの間、この列を使用したクエリはありません。
- 他の同時操作による容量のメモリ不足など、その他のメモリ管理の理由。
Fabric SKU を選択すると、容量上の各 Direct Lake セマンティック モデルで使用可能な最大メモリが決まります。 リソース ガードレールと最大メモリ制限の詳細については、この記事で後述するファブリック容量ガードレールと制限事項を参照してください。
フレーミング
フレーミング により、モデル所有者は、セマンティック モデルに読み込まれるデータを特定の時点で制御できます。 フレーミングは、セマンティック モデルの更新によってトリガーされる Direct Lake 操作であり、ほとんどの場合、完了までに数秒しかかかりません。 これは、セマンティック モデルが Delta Lake テーブルの最新バージョンのメタデータを分析し、OneLake の最新の Parquet ファイルを参照するように更新される低コストの操作であるためです。
フレーミングが発生すると、常駐列がメモリから削除され、更新の時点が将来のすべてのコード変換イベントの新しいベースラインになります。 この時点から、Direct Lake クエリでは、最新のフレーミング操作の時点の差分テーブル内のデータのみが考慮されます。 そのため、Direct Lake テーブルは、最新のフレーミング操作の時点での Delta テーブルの状態に基づいてデータを返すようにクエリされます。 その時刻は、必ずしも Delta テーブルの最新の状態であるとは限りません。
次の図は、Direct Lake のフレーム操作のしくみを示しています。
この図は、次のプロセスと機能を示しています。
アイテム | 説明 |
---|---|
セマンティック モデルは Fabric ワークスペースに存在します。 | |
フレーミング操作は定期的に行われ、将来 のすべてのコード変換イベントのベースラインが 設定されます。 フレーミング操作は、自動的に、手動で、スケジュールに従って、またはプログラムによって行うことができます。 | |
OneLake にはメタデータと Parquet ファイルが格納されます。これは Delta テーブルとして表されます。 | |
最後のフレーミング操作には、デルタ テーブルに関連する Parquet ファイル、特に最後のフレーミング操作の前に追加された Parquet ファイルが含まれます。 | |
後のフレーミング操作には、最後のフレーミング操作の後に追加された Parquet ファイルが含まれます。 | |
Direct Lake セマンティック モデルの常駐列はメモリから削除される可能性があり、更新の時点が将来のすべてのコード変換イベントの新しいベースラインになります。 | |
新しい Parquet ファイルで表される後続のデータ変更は、次のフレーミング操作が行われるまで表示されません。 |
トランスコード操作が行われるときに、Delta テーブルの最新の状態を表すデータが必要であるとは限りません。 差分テーブル内のデータが一時的な環境で一貫したクエリ結果を提供するのに、フレーミングが役立つと考えてください。 データは、実行時間の長い抽出、変換、読み込み (ETL) プロセスが発生する場合など、いくつかの理由で一時的になる可能性があります。
Direct Lake セマンティック モデルの更新は、手動、自動、またはプログラムで実行できます。 詳細については、「Direct Lake セマンティック モデルの更新」を参照してください。
Delta テーブルのバージョン管理とフレーミングの詳細については、「Direct Lake セマンティック モデルのストレージについて」を参照してください。
自動更新
Direct Lake テーブルを自動的に更新するためのセマンティック モデル レベルの設定があります。 既定では有効になっています。 これにより、OneLake のデータ変更が Direct Lake セマンティック モデルに自動的に反映されます。 前のセクションで説明したフレーミングによってデータの変更を制御する場合は、自動更新を無効にする必要があります。 詳細については、「Direct Lake セマンティック モデルの管理」を参照してください。
ヒント
Power BI レポートでページの自動更新を設定できます。 これは、レポートが Direct Lake セマンティック モデル (または他の種類のセマンティック モデル) に接続する場合に、特定のレポート ページを自動的に更新する機能です。
DirectQuery フォールバック
Direct Lake セマンティック モデルに送信されたクエリは、DirectQuery モードにフォールバックできます。 この場合、Lakehouse または Warehouse の SQL 分析エンドポイントから直接データを取得します。 このようなクエリは、最後のフレーミング操作の時点に制約されていないため、常に最新のデータを返します。
セマンティック モデルが SQL 分析エンドポイントのビュー、または行レベルのセキュリティ (RLS) を適用する SQL 分析エンドポイント内のテーブルに対してクエリを実行すると、クエリは常にフォールバックします。
また、セマンティック モデル が容量のガードレールを超えると、クエリがフォールバックする可能性があります。
重要
可能であれば、DirectQuery フォールバックを回避するために、常にソリューションを設計するか、容量のサイズを設定する必要があります。 これは、クエリのパフォーマンスが低下する可能性があるためです。
DirectLakeBehavior プロパティを設定することで、Direct Lake セマンティック モデルのフォールバックを制御できます。 詳細については、「Direct Lake の動作プロパティを設定する」を参照してください。
ファブリック容量ガードレールと制限事項
Direct Lake セマンティック モデルには、ファブリック容量ライセンスが必要です。 また、次の表に示すように、Fabric 容量サブスクリプション (SKU) に適用される容量ガードレールと制限があります。
重要
次の表の最初の列には、Power BI Premium 容量サブスクリプション (P SKU) も含まれています。 Microsoft では、購入オプションを統合し、容量 SKU ごとに Power BI Premium を廃止していることに注意してください。 新規および既存のお客様は、代わりに Fabric 容量サブスクリプション (F SKU) の購入をご検討ください。
詳細については、「Power BI Premium ライセンスと Power BI Premium に関する重要な更新プログラム」を参照してください。
Fabric SKU | テーブルあたりの Parquet ファイル数 | テーブルあたりの行グループ数 | テーブルあたりの行数 (百万) | ディスク上の最大モデル サイズ/OneLake (GB) | 最大メモリ (GB) 1 |
---|---|---|---|---|---|
F2 | 1.000 | 1.000 | 300 | 10 | 3 |
F4 | 1.000 | 1.000 | 300 | 10 | 3 |
F8 | 1.000 | 1.000 | 300 | 10 | 3 |
F16 | 1.000 | 1.000 | 300 | 20 | 5 |
F32 | 1.000 | 1.000 | 300 | 40 | 10 |
F64/FT1/P1 | 5,000 | 5,000 | 1,500 | 無制限 | 25 |
F128/P2 | 5,000 | 5,000 | 3,000 | 無制限 | 50 |
F256/P3 | 5,000 | 5,000 | 6,000 | 無制限 | 100 |
F512/P4 | 10,000 | 10,000 | 12,000 | 無制限 | 200 |
F1024/P5 | 10,000 | 10,000 | 24,000 | 無制限 | 400 |
F2048 | 10,000 | 10,000 | 24,000 | 無制限 | 400 |
1 Direct Lake セマンティック モデルの場合、 最大メモリ は、ページングできるデータ量の上限メモリ リソース制限を表します。 このため、これを超えると DirectQuery モードへのフォールバックが発生しないため、ガードレールではありません。ただし、データの量が OneLake データからのモデル データの過剰なページングを引き起こすほど大きい場合は、パフォーマンスに影響を与える可能性があります。
この値を 超えると、ディスク/OneLake の最大モデル サイズによって、セマンティック モデルに対するすべてのクエリが DirectQuery モードにフォールバックします。 テーブルに表示される他のすべてのガードレールは、クエリごとに評価されます。 そのため、Delta テーブルと Direct Lake セマンティック モデルを最適化して、不必要に高い Fabric SKU にスケールアップする必要がないようにすることが重要です (その結果、コストが増加します)。
さらに、 クエリあたりの容量ユニット と 最大メモリの制限は 、Direct Lake セマンティック モデルに適用されます。 詳細については、「容量と SKU」を参照してください。
考慮事項と制限事項
Direct Lake セマンティック モデルには、いくつかの考慮事項と制限事項があります。
Note
Direct Lake セマンティック モデルの機能と機能は進化しています。 考慮事項と制限事項の最新の一覧を確認するには、必ず定期的に確認してください。
- Direct Lake セマンティック モデル テーブルが、行レベルセキュリティ (RLS) を適用する SQL 分析エンドポイント内のテーブルに接続すると、そのモデル テーブルを含むクエリは常に DirectQuery モードにフォールバックします。 クエリのパフォーマンスが低下する可能性があります。
- Direct Lake セマンティック モデル テーブルが SQL 分析エンドポイントのビューに接続すると、そのモデル テーブルを含むクエリは常に DirectQuery モードにフォールバックします。 クエリのパフォーマンスが低下する可能性があります。
- 複合モデリングはサポートされていません。 つまり、Direct Lake セマンティック モデル テーブルを、Import、DirectQuery、Dual などの他のストレージ モードのテーブルと混合することはできません (計算グループ、what-if パラメーター、フィールド パラメーターなど、特殊なケースを除く)。
- Direct Lake ストレージ モードで列またはテーブルを参照する計算列と計算テーブルはサポートされていません。 計算グループ、 What-If パラメーター、フィールド パラメーター(暗黙的に計算テーブルを作成する)、Direct Lake の列またはテーブルを参照しない計算テーブルがサポートされています。
- Direct Lake ストレージ モード テーブルでは、複雑な Delta テーブル列の種類はサポートされていません。 バイナリおよび GUID のセマンティック型もサポートされていません。 これらのデータ型は、文字列またはその他のサポートされているデータ型に変換する必要があります。
- テーブル リレーションシップでは、一致する関連列のデータ型が必要です。
- リレーションシップの一方の列には、一意の値が含まれている必要があります。 一方の列で重複する値が検出された場合、クエリは失敗します。
- Power BI Desktop の自動データ/タイム インテリジェンスはサポートされていません。 独自の日付テーブルを日付テーブル としてマークすることがサポートされています。
- 文字列の列値の長さは、32,764 Unicode 文字に制限されています。
- 浮動小数点値 NaN (数値ではない) はサポートされていません。
- For your customer usage シナリオを使用する埋め込みシナリオはサポートされていません。
- Power BI から Web への発行は、Direct Lake セマンティック モデルに固定 ID を使用する場合にのみサポートされます。
- Web モデリング エクスペリエンスでは、Direct Lake セマンティック モデルの検証が制限されます。 ユーザーの選択は正しいと見なされ、リレーションシップのカーディナリティまたはクロス フィルターの選択、またはマークされた日付テーブル内の選択した日付列を検証するためのクエリは発行されません。
- Fabric ポータルの更新履歴の [Direct Lake] タブには、Direct Lake 関連の更新エラーのみが表示されます。 正常な更新 (フレーミング) 操作は一覧に表示されません。
- Fabric SKU によって、容量に対して Direct Lake セマンティック モデルごとに使用可能な最大メモリが決定されます。 制限を超えると、モデル データの過剰なページングが原因で、セマンティック モデルに対するクエリの速度が低下する可能性があります。
- データ ソース ワークスペースの別のリージョンにあるワークスペースでの Direct Lake セマンティック モデルの作成はサポートされていません。 たとえば、Lakehouse が米国中西部にある場合、この Lakehouse から作成できるのは同じリージョンのセマンティック モデルのみです。 回避策は、セマンティック モデルを作成する前に、他のリージョンのワークスペースに Lakehouse を作成し、テーブルへのショートカットを作成することです。 どのリージョンにいるかを確認するには、Fabric のホーム リージョンを見つける方法に関する説明を参照してください。
他のストレージ モードとの比較
次の表では、Direct Lake ストレージ モードとインポート ストレージ モードと DirectQuery ストレージ モードを比較します。
機能 | Direct Lake | インポート | DirectQuery |
---|---|---|---|
ライセンス | ファブリック容量サブスクリプション (SKU) のみ | Fabric または Power BI ライセンス (Microsoft Fabric Free ライセンスを含む) | Fabric または Power BI ライセンス (Microsoft Fabric Free ライセンスを含む) |
データ ソース | レイクハウスまたは倉庫のテーブル (またはビュー) のみ | 任意のコネクタ | DirectQuery モードをサポートするコネクタ |
SQL 分析エンドポイント ビューに接続する | はい – ただし、DirectQuery モードに自動的にフォールバックします | はい | はい |
複合モデル | いいえ 1 | はい – DirectQuery またはデュアル ストレージ モード のテーブルと組み合わせることができます | はい – インポート またはデュアル ストレージ モード のテーブルと組み合わせることができます |
シングル サインオン (SSO) | はい | 適用できません | はい |
計算テーブル | いいえ – 計算グループ、what-if パラメーター、フィールド パラメーターを除き、計算テーブルを暗黙的に作成します。 | はい | いいえ – 計算テーブルは、DirectQuery モードで他のテーブルを参照する場合でも、インポート ストレージ モードを使用します |
計算列 | いいえ | イエス | はい |
ハイブリッド テーブル | いいえ | イエス | はい |
モデル テーブルパーティション | いいえ – ただし 、 パーティション分割は Delta テーブル レベルで実行できます | はい – 増分更新によって自動的に作成されるか、 XMLA エンドポイントを使用して手動で作成 されます | いいえ |
ユーザー定義集計 | いいえ | イエス | はい |
SQL 分析エンドポイントのオブジェクト レベルのセキュリティまたは列レベルのセキュリティ | はい – ただし、クエリは DirectQuery モードにフォールバックし、アクセス許可が拒否されたときにエラーが発生する可能性があります | はい – ただし、セマンティック モデルのオブジェクト レベルのセキュリティでアクセス許可を複製する必要があります | はい – ただし、アクセス許可が拒否されたときにクエリでエラーが発生する可能性があります |
SQL Analytics エンドポイントの行レベルセキュリティ (RLS) | はい – ただし、クエリは DirectQuery モードにフォールバックします | はい – ただし、セマンティック モデル RLS でアクセス許可を複製する必要があります | はい |
セマンティック モデルの行レベル セキュリティ (RLS) | はい – ただし、固定 ID クラウド接続を使用することを強くお勧めします | はい | はい |
セマンティック モデルのオブジェクト レベルセキュリティ (OLS) | はい | イエス | はい |
更新を必要としない大量のデータ | はい | あまり適しない – クエリと更新には、より大きな容量サイズが必要になる場合があります | はい |
データ待ち時間を短縮する | はい – 自動更新が有効になっている場合、またはプログラムによるリフレーミングが有効になっている場合は、データ準備を最初にアップストリームで行う必要があります | いいえ | はい |
1 Direct Lake ストレージ モード テーブルと DirectQuery またはデュアル ストレージ モード テーブル を同じセマンティック モデルで組み合わせることはできません。 ただし、Power BI Desktop を使用して Direct Lake セマンティック モデルに複合モデルを作成し、(インポート、DirectQuery、またはデュアル ストレージ モードを使用して) 新しいテーブルまたは計算で拡張できます。 詳細については、「セマンティック モデルでの複合モデルの構築」を参照してください。