Direct Lake セマンティック モデルの開発

この記事では、Direct Lake セマンティック モデルの開発に関連する設計トピックについて説明します。

モデルを作成する

ファブリック ポータルを使用して、ワークスペースに Direct Lake セマンティック モデルを作成します。 これは、セマンティック モデルに追加する単一のレイクハウスまたはウェアハウスからどのテーブルを選択するかを含む単純なプロセスです。

その後、Web モデリング エクスペリエンス使用して、セマンティック モデルをさらに開発できます。 このエクスペリエンスでは、テーブル間のリレーションシップの作成、メジャーと計算グループの作成、日付テーブルのマーク付け、モデルとそのオブジェクトのプロパティの設定 (列形式など) を行うことができます。 また、ロールとルールを定義し、それらのロールにメンバー (Microsoft Entra ユーザー アカウントまたはセキュリティ グループ) を追加することで、モデル行レベルのセキュリティ (RLS) を設定することもできます。

または、SQL Server Management Studio (SSMS) (バージョン 19.1 以降) やオープンソースのコミュニティ ツールなど、XMLA に準拠したツールを使用してモデルの開発を続行することもできます。 詳細については、この記事で後述する XMLA エンドポイントでのモデル書き込みサポートを参照してください

モデル テーブル

モデル テーブルは、SQL 分析エンドポイントのテーブルまたはビューに基づいています。 ただし、可能な限りビューを使用しないでください。 ビューに基づくモデル テーブルに対するクエリは常に DirectQuery モードにフォールバックするため、クエリのパフォーマンスが低下する可能性があるためです。

テーブルには、モデル リレーションシップをサポートする列に加えて、フィルター処理、グループ化、並べ替え、集計のための列を含める必要があります。 不要な列はセマンティック モデルクエリのパフォーマンスには影響しませんが (メモリに読み込まれないため)、OneLake のストレージ サイズが大きくなり、読み込みと保守に必要なコンピューティング リソースが増えます。

警告

Direct Lake セマンティック モデルで動的データ マスク (DDM) を適用する列の使用はサポートされていません。

Direct Lake セマンティック モデルに含めるテーブルを選択する方法については、「Direct Lake セマンティック モデルのテーブルを編集する」を参照してください

セマンティック モデル テーブルに含める列の詳細については、「Direct Lake セマンティック モデルのストレージについて」を参照してください

データ アクセス規則を適用する

モデル データのサブセットをさまざまなユーザーに配信する要件がある場合は、データ アクセス規則を適用できます。 ルールを適用する場合は、SQL 分析エンドポイントまたはセマンティック モデルでオブジェクト レベル セキュリティ (OLS) や行レベル セキュリティ (RLS) を設定します。

Note

データ アクセス規則の適用に関するトピックは、セマンティック モデル (および関連する Fabric アイテム) を管理するコンテンツ コンシューマー、作成者、ユーザーに対するアクセス許可の設定とは異なりますが、関連しています。 アクセス許可の設定の詳細については、「Direct Lake セマンティック モデルの管理」を参照してください

オブジェクト レベルのセキュリティ (OLS)

OLS には、オブジェクトまたは列の検出とクエリへのアクセスの制限が含まれます。 たとえば、OLS を使用して、テーブルから列にアクセスできるユーザーをSalaryEmployee制限できます。

SQL 分析エンドポイントの場合は、OLS を設定して 、テーブルやビューなどのエンドポイント オブジェクトへのアクセスを制御し、列レベルのセキュリティ (CLS) を設定して エンドポイント テーブル列へのアクセスを制御できます。

セマンティック モデルの場合は、モデル テーブルまたは列へのアクセスを制御するように OLS を設定できます。 OLS を設定するには、表形式エディターなどのオープンソースのコミュニティ ツールを使用する必要があります。

行レベルのセキュリティ (RLS)

RLS では、テーブル内のデータのサブセットへのアクセスを制限します。 たとえば、RLS を使用して、営業担当者が販売地域の顧客の売上データにのみアクセスできるようにすることができます。

SQL 分析エンドポイントの場合は、RLS を設定して 、エンドポイント テーブル内の行へのアクセスを制御できます。

重要

クエリが SQL 分析エンドポイントに RLS を持つテーブルを使用すると、DirectQuery モードにフォールバックします。 クエリのパフォーマンスが低下する可能性があります。

セマンティック モデルの場合、RLS を設定して 、モデル テーブル内の行へのアクセスを制御できます。 RLS は、Web モデリング エクスペリエンス、またはサードパーティのツールを使用して設定できます。

クエリの評価方法

Direct Lake セマンティック モデルを開発する理由は、OneLake の大量のデータに対して高パフォーマンスのクエリを実行するためです。 そのため、メモリ内クエリの可能性を最大限に高めるソリューションの設計に努める必要があります。

次の手順では、クエリの評価方法 (およびクエリが失敗したかどうか) を概算します。 Direct Lake ストレージ モードの利点は、5 番目の手順が達成された場合にのみ可能です。

  1. セマンティック モデル OLS によって制限されているテーブルまたは列がクエリに含まれている場合は、エラー結果が返されます (レポートビジュアルはレンダリングに失敗します)。
  2. SQL 分析エンドポイント CLS によって制限されている列がクエリに含まれている場合 (またはテーブルが拒否された場合)、エラー結果が返されます (レポートビジュアルの表示に失敗します)。
    1. クラウド接続で SSO (既定) が使用されている場合、CLS はレポート コンシューマーのアクセス レベルによって決まります。
    2. クラウド接続で固定 ID が使用されている場合、CLS は固定 ID のアクセス レベルによって決定されます。
  3. クエリに RLS を適用する SQL 分析エンドポイント内のテーブルが含まれている場合、またはビューが使用されている場合、クエリは DirectQuery モードにフォールバックします。
    1. クラウド接続で SSO (既定) が使用されている場合、RLS はレポート コンシューマーのアクセス レベルによって決まります。
    2. クラウド接続で固定 ID が使用されている場合、RLS は固定 ID のアクセス レベルによって決定されます。
  4. クエリ が容量のガードレールを超えると、DirectQuery モードにフォールバックします。
  5. それ以外の場合、クエリはメモリ内キャッシュから満たされます。 列データは、 必要なときにメモリ に読み込まれます。

ソース アイテムのアクセス許可

データへのアクセスに使用されるアカウントは、次のいずれかです。

  • クラウド接続で SSO (既定) が使用されている場合は、レポート コンシューマーになります。
  • クラウド接続で固定 ID が使用されている場合は、固定 ID になります。

このアカウントには、少なくともソースアイテム (lakehouse または Warehouse) に対する読み取りと読み取りデータのアクセス許可が必要です。 アイテムのアクセス許可は、ワークスペース ロールから継承することも、この記事の説明に従ってアイテムに対して明示的に割り当てることもできます。

この要件が満たされていると仮定すると、Fabric はデルタ テーブルと関連する Parquet ファイルを読み取るためにセマンティック モデルへの必要なアクセス権を付与します (列データをメモリに読み込む) とデータ アクセス規則を適用できます。

データ アクセス規則のオプション

データ アクセス規則は、次の方法で設定できます。

  • セマンティック モデルのみ。
  • SQL 分析エンドポイントのみ。
  • セマンティック モデルと SQL 分析エンドポイントの両方で。

セマンティック モデルのルール

データ アクセス規則を適用する必要がある場合は、必ずセマンティック モデルで適用する必要があります。 これは、セマンティック モデルによって適用される RLS は、高パフォーマンスクエリを実現するためにデータのメモリ内キャッシュをフィルター処理することによって実現されるためです。

また、レポート コンシューマーに、レイクハウスまたはウェアハウスにクエリを実行するアクセス許可が付与されていない場合にも適したアプローチです。

どちらの場合も、クラウド接続で SSO ではなく固定 ID を使用することを強くお勧めします。 SSO は、エンド ユーザーが SQL 分析エンドポイントに直接アクセスできることを意味するため、セマンティック モデルのセキュリティ規則をバイパスする可能性があります。

重要

セマンティック モデル項目のアクセス許可は、Power BI アプリを使用して明示的に設定することも、ワークスペース ロールを介して暗黙的に取得することもできます

特に、セマンティック モデルのデータ アクセス規則は、セマンティック モデルに対する書き込みアクセス許可を持つユーザーには適用されません。 逆に、データ アクセス規則は、ビューアー ワークスペース ロールに割り当てられているユーザーに適用されます。 ただし、管理者、メンバーまたは共同作成者ワークスペース ロールに割り当てられたユーザーには、セマンティック モデルに対する書き込みアクセス許可が暗黙的に付与されるため、データ アクセス規則は適用されません。 詳細については、「ワークスペースのロール」を参照してください

SQL 分析エンドポイントのルール

セマンティック モデル のクラウド接続 でシングル サインオン (SSO) が使用 されている場合は、SQL 分析エンドポイントにデータ アクセス規則を適用するのが適切です。 これは、ユーザーの ID が SQL 分析エンドポイントのクエリに委任され、クエリがユーザーがアクセスできるデータのみを確実に返すからです。 また、ユーザーが他のワークロードに対して SQL 分析エンドポイントに直接クエリを実行する場合 (たとえば、Power BI のページ分割されたレポートを作成したり、データをエクスポートしたりする場合)、このレベルでデータ アクセス規則を適用することも適切です。

ただし、SQL 分析エンドポイントに RLS を適用するテーブルが含まれている場合、セマンティック モデル クエリは DirectQuery モードにフォールバックします。 したがって、セマンティック モデルでは、高パフォーマンスクエリを実現するためにデータをメモリにキャッシュしない可能性があります。

両方のレイヤーのルール

データ アクセス規則は、両方のレイヤーで適用できます。 ただし、このアプローチには、複雑さと管理のオーバーヘッドが伴います。 この場合、クラウド接続では SSO ではなく固定 ID を使用することを強くお勧めします。

データ アクセス規則のオプションの比較

次の表では、データ データ アクセスのセットアップ オプションを比較します。

データ アクセス規則を適用する コメント
セマンティック モデルのみ このオプションは、ユーザーに lakehouse または Warehouse に対するクエリの項目アクセス許可が付与されていない場合に使用します。 固定 ID を使用するようにクラウド接続を設定します。 メモリ内キャッシュから高いクエリ パフォーマンスを実現できます。
SQL 分析エンドポイントのみ このオプションは、ユーザーがウェアハウスまたはセマンティック モデルのいずれかからデータにアクセスする必要があり、一貫性のあるデータ アクセス 規則を使用する必要がある場合に使用します。 クラウド接続で SSO が有効になっていることを確認します。 クエリのパフォーマンスが低下する可能性があります。
Lakehouse またはウェアハウス セマンティック モデル このオプションには、追加の管理オーバーヘッドが伴います。 固定 ID を使用するようにクラウド接続を設定します。

データ アクセス規則の適用に関連する推奨プラクティスを次に示します。

  • 異なるユーザーをデータのサブセットに制限する必要がある場合は、実行可能な場合は常に、セマンティック モデル レイヤーでのみ RLS を適用します。 そうすることで、ユーザーは高パフォーマンスのメモリ内クエリの恩恵を受けることができます。 この場合、クラウド接続では SSO ではなく固定 ID を使用することを強くお勧めします。
  • 可能であれば、レポート ビジュアルでエラーが発生するため、どちらの層でも OLS と CLS を適用しないでください。 エラーは、ユーザーの混乱や懸念につながる可能性があります。 集計可能な列の場合は、CLS ではなく特定の条件で BLANK を返すメジャーを作成することを検討してください (可能な場合)。

XMLA エンドポイントでのモデル書き込みのサポート

Direct Lake セマンティック モデルでは、SSMS (19.1 以降) やオープンソースのコミュニティ ツールなどのツールを使用して、XMLA エンドポイントでの書き込み操作をサポートします。

ヒント

サード パーティ製ツールを使用してセマンティック モデルを開発、管理、または最適化する方法の詳細については、高度なデータ モデル管理の使用シナリオを参照してください。

書き込み操作を実行する前に、容量に対して XMLA 読み取り/書き込みオプションを有効にする必要があります。 詳細については、「XMLA の読み取り/書き込みを有効にする」を参照してください

XMLA エンドポイントサポートを使用したモデル書き込み操作:

  • Direct Lake モデルのメタデータのカスタマイズ、マージ、スクリプト作成、デバッグ、テスト。
  • Azure DevOps と GitHub を使用したソースとバージョン管理、継続的インテグレーションと継続的デプロイ (CI/CD)。 詳細については、「コンテンツライフサイクル管理」を参照してください
  • セマンティック モデルの更新、PowerShell と REST API を使用した Direct Lake セマンティック モデルへの変更の適用などの自動化タスク。

XMLA を使用してセマンティック モデルを変更する場合は、変更されたオブジェクトの ChangedProperties コレクションと PBI_RemovedChildren コレクションを更新して、変更または削除されたプロパティを含める必要があります。 その更新を実行しない場合、次にスキーマが同期されるときに、Power BI モデリング ツールによって変更が上書きされる可能性があります。

XMLA を使用してセマンティック モデルを変更するためにサポートされるモデルは次のとおりです。

  • テーブル/列の名前の変更 (ChangeProperty = name)
  • テーブルを削除する (クエリ式で注釈PBI_RemovedChildrenテーブルを追加する)

重要

XMLA アプリケーションを使用して作成された Direct Lake テーブルは、アプリケーションが更新コマンドを送信するまで、最初は未処理の状態になります。 未処理のテーブルを含むクエリは、常に DirectQuery モードにフォールバックします。 そのため、新しいセマンティック モデルを作成するときは、必ずモデルを更新してそのテーブルを処理してください。

詳細については、「XMLA エンドポイントとのセマンティック モデルの接続」を参照してください

Direct Lake モデルのメタデータ

XMLA エンドポイントを使用して Direct Lake セマンティック モデルに接続すると、メタデータは他のモデルのメタデータのようになります。 ただし、Direct Lake モデルには次の違いがあります。

  • データベース オブジェクトのプロパティは compatibilityLevel 1604 (またはそれ以上) です。
  • Direct Lake パーティションの mode プロパティが に directLake設定されています。
  • Direct Lake パーティションでは、共有式を使用してデータ ソースを定義します。 式は、レイクハウスまたはウェアハウスの SQL 分析エンドポイントを指します。 Direct Lake は SQL 分析エンドポイントを使用してスキーマとセキュリティ情報を検出しますが、OneLake から直接データを読み込みます (何らかの理由で DirectQuery モードにフォールバックしない限り)。

パブリケーション後のタスク

Direct Lake セマンティック モデルを発行したら、いくつかのセットアップ タスクを完了する必要があります。 詳細については、「Direct Lake セマンティック モデルの管理」を参照してください

サポートされていない機能

Direct Lake セマンティック モデルでは、次のモデル機能はサポートされていません。

  • Direct Lake ストレージ モードでテーブルまたは列を参照する計算テーブル
  • Direct Lake ストレージ モードでテーブルまたは列を参照する計算列
  • ハイブリッド テーブル
  • ユーザー定義集計
  • 複合モデルでは、Direct Lake ストレージ モード テーブルと DirectQuery またはデュアル ストレージ モード テーブル を同じモデルで組み合わせることはできません。 ただし、Power BI Desktop を使用して Direct Lake セマンティック モデルへのライブ接続を作成し、新しいメジャーで拡張できます。そこから、このモデルに変更を加えて新しいテーブルを追加するオプションをクリックできます (インポート、DirectQuery、またはデュアル ストレージ モードを使用)。 このアクションにより、Direct Lake モードでセマンティック モデルへの DirectQuery 接続が作成されるため、テーブルは DirectQuery ストレージ モードとして表示されますが、このストレージ モードは DirectQuery へのフォールバックを示していません。 この新しいモデルと Direct Lake モデルの間の接続のみが DirectQuery であり、クエリでは引き続き Direct Lake を使用して OneLake からデータを取得します。 詳細については、「セマンティック モデルでの複合モデルの構築」を参照してください
  • 動的データ マスクを適用する SQL 分析エンドポイント列に基づく列。