次の方法で共有


Direct Lake の概要

Direct Lake は、Microsoft Fabric ワークスペースに格納されている Power BI セマンティック モデルのテーブル用のストレージ モード オプションです。 これは、Delta テーブルからメモリにすばやく読み込むことができる大量のデータ用に最適化されています。これにより、すべての分析データの単一ストアである OneLake の Parquet ファイルにデータが格納されます。 メモリに読み込まれると、セマンティック モデルによって高パフォーマンスのクエリが可能になります。 Direct Lake では、データをモデルにインポートするための時間とコストがかかる作業をなくすことができます。

Direct Lake ストレージ モードを使用して、単一の Fabric Lakehouse または Fabric Warehouse のテーブルまたはビューに接続できます。 これらの Fabric 項目と Direct Lake セマンティック モデルの両方に、Fabric 容量ライセンスが必要です。

Direct Lake セマンティック モデルと、前の段落で説明したように OneLake の Delta テーブルに接続する方法を示す図。

いくつかの点で、Direct Lake セマンティック モデルは、Import セマンティック モデルに似ています。 これは、モデル データが高速クエリ パフォーマンスのために VertiPaq エンジンによってメモリに読み込まれるためです (DirectQuery フォールバックの場合を除きます。これについては、この記事の後半で説明します)。

ただし、Direct Lake セマンティック モデルは、重要な点で Import セマンティック モデルと異なります。 これは、Direct Lake セマンティック モデルの更新操作が、Import セマンティック モデルの更新操作とは概念的に異なるためです。 Direct Lake セマンティック モデルの場合、更新には、完了するまでに数秒かかる場合があるフレーミング操作 (この記事の後半で説明します) が含まれます。 これは低コストの操作であり、セマンティック モデルが最新バージョンの Delta テーブルのメタデータを分析し、OneLake の最新ファイルを参照するように更新されます。 これに対し、Import セマンティック モデルでは、更新によってデータのコピーが生成されます。これには、かなりの時間がかかり、大量のデータ ソースと容量リソース (メモリと CPU) が消費される可能性があります。

Note

Import セマンティック モデルの増分更新 は、更新時間と容量リソースの使用を減らすのに役立ちます。

Direct Lake ストレージ モードを使用するタイミング

Direct Lake ストレージ モードの主なユース ケースは通常、レイク中心のアーキテクチャを活用する IT 主導の分析プロジェクトの場合です。 このシナリオでは、OneLake に大量のデータがあるか、大量のデータを蓄積することが予想されます。 このユース ケースでは、メモリへのデータの高速読み込み、頻繁で高速な更新操作、容量リソースの効率的な使用、高速のクエリ パフォーマンスがすべて重要です。

Note

Import セマンティック モデルと DirectQuery セマンティック モデルは Fabric で引き続き関連し、いくつかのシナリオでセマンティック モデルの適切な選択肢です。 たとえば、Import ストレージ モードは、多くの場合、IT に依存せず新しいデータ要素を追加し、迅速に対応するための自由と機敏性を必要とするセルフサービス アナリストに適しています。

また、OneLake 統合では、移行作業を伴わずに、Import ストレージ モードのテーブルのデータを OneLake の Delta テーブルに自動的に書き込みます。 このオプションを使用すると、Import セマンティック モデルのユーザーが使用できる Fabric の利点の多くを実現できます。たとえば、ショートカットによるレイクハウスとの統合、SQL クエリ、ノートブックなどです。 既存のデータ ウェアハウスや分析システムを必ずしもまたはすぐに設計し直さなくても、Fabric の利点をすばやく得る方法として、このオプションを検討することをお勧めします。

Direct Lake ストレージ モードは、データの待機時間を最小限に抑えて、ビジネス ユーザーがデータをすばやく使用できるようにするためにも適しています。 Delta テーブルが断続的に変更される場合 (およびデータ レイクで既にデータ準備が完了していると仮定した場合)、それらの変更に応じて再構築する自動更新を利用できます。 この場合、セマンティック モデルに送信されたクエリは最新のデータを返します。 この機能は、Power BI レポートのページの自動更新機能と連携して適切に機能します。

Direct Lake は、データ レイクで行われるデータ準備に依存することに注意してください。 データ準備は、Fabric Lakehouse の Spark ジョブ、Fabric Warehouse の T-SQL DML ステートメント、データフロー、パイプラインなど、さまざまなツールを使用して行うことができます。 このアプローチは、再利用性を最大化するために、データ準備ロジックがアーキテクチャで可能な限り短く実行されるようにするのに役立ちます。 ただし、セマンティック モデルの作成者がソース項目を変更できない場合 (たとえば、IT によって管理されているレイクハウスに対する書き込みアクセス許可がないセルフサービス アナリストの場合)、Import ストレージ モードの方が適している可能性があります。 これは、セマンティック モデルの一部として定義されている Power Query を使用したデータ準備がサポートされているためです。

Direct Lake ストレージ モードを検討するときは、現在の Fabric 容量ライセンスFabric 容量ガードレールを必ず考慮に入れてください。 また、この記事の後半で説明する考慮事項と制限事項も考慮に入れてください。

ヒント

Direct Lake セマンティック モデルが適切なソリューションかどうかを判断し、リスクを軽減するために、プロトタイプまたは概念実証 (POC) を生成することをお勧めします。

Direct Lake のしくみ

通常、Direct Lake セマンティック モデルに送信されるクエリは、Delta テーブルから取得された列のメモリ内キャッシュから処理されます。 Delta テーブルの基になるストレージは、OneLake 内の 1 つ以上の Parquet ファイルです。 Parquet ファイルは、行ではなく、列によってデータを整理します。 セマンティック モデルでは、クエリで必要とされるので、Delta テーブルからメモリに列全体を読み込みます。

Direct Lake セマンティック モデルでは、"DirectQuery フォールバック" を使用することもできます。これには、DirectQuery モードへのシームレスな切り替えも含まれます。 DirectQuery フォールバックでは、レイクハウスの SQL 分析エンドポイントまたはウェアハウスから直接、データを取得します。 たとえば、Delta テーブルに Fabric 容量でサポートされているよりも多くのデータ行が含まれている場合に、フォールバックが発生する可能性があります (この記事の後半で説明)。 この場合、DirectQuery 操作では、SQL 分析エンドポイントにクエリが送信されます。 フォールバック操作により、クエリのパフォーマンスが低下する可能性があります。

次の図は、Power BI レポートを開くユーザーのシナリオを使用して Direct Lake がどのように動作するかを示しています。

Direct Lake セマンティック モデルのしくみを示す図。図に示す概念は、次の表で説明します。

この図は、次のユーザー アクション、プロセス、機能を示しています。

アイテム 説明
OneLake は、Parquet 形式で分析データを格納するデータ レイクです。 このファイル形式は、Direct Lake セマンティック モデルのデータを格納するために最適化されています。
Fabric Lakehouse または Fabric Warehouse は、Fabric 容量上のワークスペースに存在します。 レイクハウスには SQL 分析エンドポイントがあり、クエリ用の SQL ベースのエクスペリエンスを提供します。 テーブル (またはビュー) は、Transact-SQL (T-SQL) を使用して OneLake の Delta テーブルに対してクエリを実行する手段を提供します。
Direct Lake セマンティック モデルは、Fabric ワークスペースに存在します。 これは、レイクハウスまたはウェアハウス内のテーブルまたはビューに接続します。
ユーザーが Power BI レポートを開きます。
Power BI レポートは、Data Analysis Expressions (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 セマンティック モデルごとに使用可能な最大メモリが決まります。 リソース ガードレールと最大メモリ制限の詳細については、この記事の後半で説明する「Fabric 容量のガードレールと制限事項」を参照してください。

フレーミング

"フレーミング" を使用すると、モデル所有者は、セマンティック モデルにどのデータが読み込まれるかを特定の時点で制御できます。 フレーミングは、セマンティック モデルの更新によってトリガーされる Direct Lake 操作であり、ほとんどの場合、完了までに数秒しかかかりません。 これは、低コストの操作であり、セマンティック モデルが最新バージョンの Delta Lake テーブルのメタデータを分析し、OneLake の最新 Parquet ファイルを参照するように更新されるからです。

フレーミングが発生すると、常駐列がメモリから削除される可能性があり、特定時点の更新が将来のすべてのコード変換イベントの新しいベースラインになります。 この時点から、Direct Lake クエリでは、最新のフレーミング操作の時点での Delta テーブル内のデータのみが考慮されます。 そのため、Direct Lake テーブルは、"最新のフレーミング操作の時点での" Delta テーブルの状態に基づいてデータを返すようにクエリが実行されます。 その時点は、必ずしも Delta テーブルの最新の状態であるとは限りません。

次の図は、Direct Lake フレーミング操作のしくみを示しています。

Direct Lake フレーミング操作のしくみを示す図。

この図は、次のプロセスと機能を示しています。

アイテム 説明
セマンティック モデルは、Fabric ワークスペースに存在します。
フレーミング操作は定期的に行われ、将来のすべてのコード変換イベントのベースラインを設定します。 フレーミング操作は、自動的に、手動で、スケジュールに従って、またはプログラムによって行うことができます。
OneLake にはメタデータと Parquet ファイルが格納され、これらは Delta テーブルとして表されます。
最後のフレーミング操作には、Delta テーブルに関連する Parquet ファイル、特に "最後" のフレーミング操作の前に追加された Parquet ファイルが含まれます。
後のフレーミング操作には、"最後" のフレーミング操作の後に追加された Parquet ファイルが含まれます。
Direct Lake セマンティック モデルの常駐列がメモリから削除される可能性があり、特定時点の更新が将来のすべてのコード変換イベントの新しいベースラインになります。
新しい Parquet ファイルで表される以降のデータ変更は、次のフレーミング操作が行われるまで表示されません。

コード変換操作が行われるときに、Delta テーブルの最新の状態を表すデータがあることが、必ずしも望ましいとは限りません。 Delta テーブル内のデータが一時的である環境で一貫したクエリ結果を提供するのに、フレーミングが役立つ可能性があることを考えてみてください。 データは、実行時間の長い抽出、変換、読み込み (ETL) プロセスが発生する場合など、いくつかの理由で一時的になる可能性があります。

Direct Lake セマンティック モデルの更新は、手動、自動、またはプログラムで実行できます。 詳細については、「Direct Lake セマンティック モデルを更新する」を参照してください。

Delta テーブルのバージョン管理とフレーミングの詳細については、「Direct Lake セマンティック モデルのストレージについて」を参照してください。

自動更新

Direct Lake テーブルを自動的に更新するためのセマンティック モデル レベルの設定があります。 既定では有効になっています。 これにより、OneLake のデータ変更が Direct Lake セマンティック モデルに自動的に反映されます。 前のセクションで説明したフレーミングによってデータの変更を制御する場合は、自動更新を無効にする必要があります。 詳細については、「Direct Lake セマンティック モデルを管理する」を参照してください。

ヒント

Power BI レポートのページの自動更新を設定できます。 これは、レポートが Direct Lake セマンティック モデル (または他の種類のセマンティック モデル) に接続する場合に、特定のレポート ページを自動的に更新する機能です。

DirectQuery フォールバック

Direct Lake セマンティック モデルに送信されたクエリは、DirectQuery モードにフォールバックできます。 この場合、レイクハウスの SQL 分析エンドポイントまたはウェアハウスから直接、データを取得します。 このようなクエリは、最後のフレーミング操作の時点に制限されないため、常に最新のデータを返します。

セマンティック モデルが SQL 分析エンドポイントのビューに対して、または行レベル セキュリティ (RLS) を適用する SQL 分析エンドポイント内のテーブルに対してクエリを実行すると、クエリは "常に" フォールバックします。

また、セマンティック モデルが容量のガードレールを超えるときも、クエリがフォールバックする可能性があります。

重要

可能であれば、DirectQuery フォールバックを回避するように、常にソリューションを設計するか、容量のサイズを設定する必要があります。 これによりクエリのパフォーマンスが低下する可能性があるからです。

DirectLakeBehavior プロパティを設定することで、Direct Lake セマンティック モデルのフォールバックを制御できます。 詳細については、「Direct Lake 動作プロパティを設定する」を参照してください。

Fabric 容量のガードレールと制限事項

Direct Lake セマンティック モデルには、Fabric 容量ライセンスが必要です。 また、次の表に示すように、Fabric 容量サブスクリプション (SKU) に適用される容量のガードレールと制限があります。

重要

次の表の最初の列には、Power BI Premium 容量サブスクリプション (P SKU) も含まれています。 Microsoft では、購入オプションを統合し、Power BI Premium Per Capacity SKU を廃止していることに注意してください。 新規および既存のお客様は、代わりに 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 モードにフォールバックします。 この表に表示される他のすべてのガードレールは、クエリごとに評価されます。 したがって、より高い Fabric SKU に不必要にスケールアップする (その結果、コストが増加) 必要がないように、Delta テーブルDirect Lake セマンティック モデルを最適化することが重要です。

さらに、"容量ユニット" と "クエリあたりの最大メモリ制限" も、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 (非数) はサポートされていません。
  • 顧客向けの使用シナリオを使用する埋め込みシナリオはサポートされません。
  • Power BI から Web に発行することは、Direct Lake セマンティック モデルに固定 ID を使用する場合にのみサポートされます。
  • Web モデリング エクスペリエンスでは、Direct Lake セマンティック モデルの検証は制限されます。 ユーザーの選択は正しいと見なされ、リレーションシップ、またはマークされた日付テーブル内の選択した日付列のカーディナリティまたはクロス フィルターの選択を検証するためのクエリは発行されません。
  • Fabric ポータルの更新履歴の [Direct Lake] タブには、Direct Lake 関連の更新エラーのみが一覧表示されます。 正常な更新 (フレーミング) 操作は一覧表示されません。
  • Fabric SKU により、容量に対して Direct Lake セマンティック モデルごとに使用可能な最大メモリが決まります。 制限を超えると、モデル データの過剰なページング インとページング アウトが原因で、セマンティック モデルに対するクエリの速度が低下する可能性があります。
  • データ ソース ワークスペースの別のリージョンにあるワークスペースでの Direct Lake セマンティック モデルの作成はサポートされていません。 たとえば、レイクハウスが米国中西部にある場合、このレイクハウスから作成できるのは同じリージョンのセマンティック モデルのみです。 回避策は、セマンティック モデルを作成する前に、他のリージョンのワークスペースにレイクハウスを作成し、テーブルへのショートカットを作成することです。 お住まいのリージョンを確認するには、「Fabric のホーム リージョンを見つける」を参照してください。
  • サービス プリンシパル ID を使ってカスタムの Direct Lake セマンティック モデルを作成したり表示したりできますが、既定の Direct Lake セマンティック モデルではサービス プリンシパルはサポートされていません。 テナントの Fabric REST API でサービス プリンシパル認証が有効になっていることを確認し、Direct Lake セマンティック モデルのワークスペースに対する共同作成者以上のアクセス許可をサービス プリンシパルに付与します。
  • Direct Lake は、認証のためのサービス プリンシパル プロファイルをサポートしていません。

他のストレージ モードとの比較

次の表では、Direct Lake ストレージ モードを Import ストレージ モードおよび DirectQuery ストレージ モードと比較しています。

機能 Direct Lake インポート DirectQuery
ライセンス Fabric 容量サブスクリプション (SKU) のみ 任意の Fabric または Power BI ライセンス (Microsoft Fabric 無料ライセンスを含む) 任意の Fabric または Power BI ライセンス (Microsoft Fabric 無料ライセンスを含む)
データ ソース レイクハウスまたはウェアハウス テーブル (またはビュー) のみ 任意のコネクタ DirectQuery モードをサポートする任意のコネクタ
SQL 分析エンドポイント ビューに接続する あり。ただし、DirectQuery モードに自動的にフォールバックします はい はい
複合モデル いいえ 1 あり。DirectQuery または Dual ストレージ モード テーブルと組み合わせることができます あり。Import または Dual ストレージ モード テーブルと組み合わせることができます
シングル サインオン (SSO) はい 適用できません はい
計算テーブル なし。計算グループwhat-if パラメーター、および計算テーブルを暗黙的に作成するフィールド パラメーターを除きます はい なし。DirectQuery モードで他のテーブルを参照する場合でも、計算テーブルでは Import ストレージ モードを使用します
計算列 いいえ イエス はい
ハイブリッド テーブル いいえ イエス はい
モデル テーブルのパーティション なし。ただし、Delta テーブル レベルでパーティション分割を実行できます あり。増分更新によって自動的に作成されるか、XMLA エンドポイントを使用して手動で作成されます いいえ
ユーザー定義集計 いいえ イエス はい
SQL 分析エンドポイントのオブジェクトレベル セキュリティまたは列レベル セキュリティ あり。ただし、クエリは DirectQuery モードにフォールバックし、アクセス許可が拒否されるとエラーが生成される可能性があります あり。ただし、セマンティック モデルのオブジェクトレベル セキュリティでアクセス許可を複製する必要があります あり。ただし、アクセス許可が拒否されるとクエリでエラーが生成される可能性があります
SQL 分析エンドポイントの行レベル セキュリティ (RLS) あり。ただし、クエリは DirectQuery モードにフォールバックします あり。ただし、セマンティック モデルの RLS でアクセス許可を複製する必要があります はい
セマンティック モデルの行レベル セキュリティ (RLS) あり。ただし、固定 ID クラウド接続を使用することを強くお勧めします はい はい
セマンティック モデルのオブジェクトレベル セキュリティ (OLS) はい イエス はい
更新要件がない大規模なデータ ボリューム はい あまり適していない。より大きい容量サイズがクエリと更新に必要になる可能性があります はい
データ待機時間を短縮する あり。自動更新が有効になっている場合、またはプログラムによる再フレーミングの場合。ただし、最初にアップストリームでデータ準備を行う必要があります いいえ はい

1 Direct Lake ストレージ モード テーブルを、"同じセマンティック モデルの" DirectQuery または Dual ストレージ モード テーブルと組み合わせることはできません。 ただし、Power BI Desktop を使用して Direct Lake セマンティック モデルに複合モデルを作成し、(Import、DirectQuery、または Dual ストレージ モードを使用して) 新しいテーブルまたは計算で拡張できます。 詳細については、セマンティック モデルで複合モデルを構築するに関するページを参照してください。