ストレージ モードを選択する

完了

Microsoft Fabricにおけるセマンティック モデルの最初の設計上の決定は、データがモデルにどのように流れ込むかです。 選択したストレージ モードは、クエリのパフォーマンス、データの鮮度、使用可能なFabric機能に影響します。 Fabricでは、Direct Lake が既定であり、ほとんどのワークロードでは適切な選択肢です。

Direct Lake モード

Direct Lake は、Microsoft Fabricで作成されたセマンティック モデルの既定のストレージ モードです。 インポート モードとは異なり、Direct Lake はモデルにデータをコピーしません。 DirectQuery とは異なり、クエリはソース SQL に変換されません。 代わりに、Direct Lake は OneLake から直接 Delta テーブルをメモリに読み取り、Import の速度と DirectQuery の鮮度を組み合わせます。

ユーザーが Direct Lake セマンティック モデルに基づくレポートを開くと、エンジンは Delta Parquet ファイルから列データをオンデマンドで読み込みます。 インポート モードの場合と同様に、更新をスケジュールする必要はありません。 基になる Delta テーブルが更新されると、モデルはこれらの変更を反映します。

Direct Lake モデルでは、大規模なセマンティック モデルのストレージ形式が自動的に有効になります。 この設定では、10 GB のモデル サイズ制限が削除され、クエリ スケールアウトと XMLA エンドポイントの読み取り/書き込みアクセスの両方の前提条件となります。 Direct Lake モデルに対して手動で有効にする必要はありません。

Direct Lake 接続オプション

Direct Lake モデルは、次の 2 つのパスを介してデータに接続できます。

  • OneLake テーブル: モデルは、レイクハウスまたは倉庫内の Delta テーブルに直接接続します。 これは最も単純なパスであり、データが単一のFabric データ ストアにある場合に適切に機能します。
  • SQL 分析エンドポイント: モデルは、レイクハウスまたはウェアハウスの SQL エンドポイントを介して接続します。 このパスを使用すると、SQL レイヤーで定義されたビュー、データベース間クエリ、およびセキュリティ機能にアクセスできます。

データが単純で 1 か所に存在する場合は、OneLake テーブルを選択します。 SQL で定義されているビュー、ソース間結合、または行レベルのセキュリティが必要な場合は、SQL 分析エンドポイントを選択します。

フォールバック動作

一部の操作により、Direct Lake モデルが DirectQuery モードにフォールバックする可能性があります。 複雑な DAX 計算、使用可能なメモリを超えるクエリ、またはサポートされていない特定の操作によって、このフォールバックがトリガーされます。 フォールバックが発生すると、クエリは差分ファイルを直接読み取るのではなく、SQL 分析エンドポイントに対して実行されます。

セマンティック モデルの設定でフォールバック動作を構成できます。

  • フォールバックを許可する: Direct Lake モードで実行できないクエリは、DirectQuery に自動的にフォールバックします。 ユーザーは結果を取得しますが、パフォーマンスが低下する可能性があります。
  • フォールバックを許可しない: Direct Lake モードで実行できないクエリはエラーを返します。 このオプションでは、一貫したパフォーマンスが適用されますが、すべてのクエリが Direct Lake の機能内に留まる必要があります。

ほとんどの運用ワークロードでは、フォールバックが許可された状態から開始し、トリガーされるクエリを監視します。 その後、これらのクエリまたはデータ構造を最適化して、時間の経過に伴うフォールバック頻度を減らします。

インポート モード

インポート モードでは、データがセマンティック モデルにコピーされ、圧縮されたメモリ内形式で格納されます。 クエリはローカル コピーに対して実行されるため、インポートはクエリのパフォーマンスに最も高速なストレージ モードになります。 ただし、データは、最後に更新された時点までの最新の状態です。

インポート モードは、次の場合に適した選択肢です。

  • データ ソースは、Fabric (オンプレミス データベース、サード パーティ製 API、フラット ファイル) の外部にあります。
  • クエリのパフォーマンスが最優先事項であり、ほぼリアルタイムの鮮度は必要ありません。
  • Direct Lake でまだサポートされていない機能が必要です。

ヒント

インポート モードを使用する場合は、生テーブルではなくビューに接続し、必要な列のみを含め、適切なデータ型を使用してモデル のサイズを小さくします。 インポート モデルに読み込まれるデータを減らす手法の詳細について説明します。

DirectQuery モード

DirectQuery は、クエリ時にデータ ソースに直接クエリを送信します。 モデルにはデータが格納されないため、DirectQuery はリアルタイム のデータ シナリオやインポートできない非常に大規模なデータセットに適しています。

トレードオフはパフォーマンスです。 すべてのレポート操作では、ソース システムに対するクエリが生成されます。 DirectQuery は、次の場合に最適です。

  • リアルタイム データが必要であり、短い更新の遅延も許容されません。
  • ソース データ ボリュームが大きすぎてインポートできず、データ ソースがFabric外にあります。
  • ガバナンス要件では、データをソースに留める必要があります。

ヒント

詳細については、 DirectQuery モデルのガイダンスを参照してください。

複合モード

複合モードでは、1 つのモデル内でストレージ モードが結合されます。 インポートを使用するテーブルもあれば、DirectQuery または Direct Lake を使用するテーブルもあります。 これにより、テーブルごとにパフォーマンスと鮮度のニーズが異なるシナリオに柔軟性が提供されます。

たとえば、大きなファクト テーブルは Direct Lake に残り、外部ソースの小さな参照テーブルでは Import が使用されます。 複合モードでは、異なるデータ ソースのテーブル間の多対多リレーションシップも可能になります。

複合モードは、次の場合に使用します。

  • 同じモデル内のFabricソースとFabric以外のソースの両方のデータが必要です。
  • 一部のテーブルではリアルタイム データが必要ですが、キャッシュされたパフォーマンスのメリットを受けるテーブルもあります。
  • ソース間分析のために、Direct Lake テーブルとインポート テーブルを組み合わせる必要があります。

適切なストレージ モードを選択する

次の表は、各モードを選択するタイミングをまとめたものです。

モード データの場所 クエリ速度 データの鮮度 最適な用途
Direct Lake OneLake (Delta テーブル) 速い ほぼリアルタイム Fabricネイティブワークロード (デフォルト)
インポート モデル内キャッシュ 最 速 更新に依存 Fabric以外のソース、最大パフォーマンス
DirectQuery 元システム ソース システムに依存 ほぼリアルタイム リアルタイム要件、非常に大きな外部データ
Composite Mixed 場合により異なる Mixed ソース間のシナリオ、ハイブリッド要件

ストレージ モードは、AI の使用にも影響します。 Copilotまたはデータ エージェントがセマンティック モデルに対してクエリを実行すると、モデルが現在反映しているデータに基づいて回答が返されます。 Direct Lake のほぼリアルタイムの鮮度は、AI クエリがスケジュールされた更新を待たずに現在の結果を返することを意味します。 人間のユーザーと AI の両方に対応するモデルの場合、ストレージ モードの選択は両方のエクスペリエンスの品質に直接影響します。

Fabricで、Direct Lake から始めます。 特定のシナリオで必要な場合にのみ、別のモードに移動します。