Power BI Desktop の DirectQuery

Power BI Desktop を使用してデータ ソースに接続すると、データのコピーをインポートできます。 一部のデータ ソースでは、DirectQuery を使用してデータをインポートせずにデータ ソースに直接接続することもできます。 DirectQuery をサポートするデータ ソースの完全なリストについては、「DirectQuery でサポートされるデータ ソース」を参照してください。

インポートと DirectQuery 接続モードの使用の違いを次に示します。

  • インポート: 選択したテーブルと列のデータのコピーが Power BI Desktop にインポートされます。 視覚エフェクトを作成するか、操作する場合、Power BI Desktop ではインポートされたデータが使用されます。 初回インポート後または最新の更新後に基になるデータの変更を確認するには、データ セット全体をもう一度インポートしてデータを更新する必要があります。

  • DirectQuery: データは Power BI Desktop にインポートされません。 リレーショナル ソースの場合、Power BI Desktop の [フィールド] リストに表示されるテーブルと列を選択できます。 SAP Business Warehouse (SAP BW) などの多次元ソースの場合、選択されたキューブのディメンションとメジャーは [フィールド] リストに表示されます。 視覚エフェクトを作成または操作するときに、Power BI Desktop で基になるデータ ソースに対してクエリが実行されるため、常に現在のデータが表示されます。

DirectQuery では、視覚エフェクトを作成または操作する場合、基になるソースに対してクエリを実行する必要があります。 視覚エフェクトの更新に必要な時間は、基になるデータ ソースのパフォーマンスによって異なります。 要求の処理に必要なデータが最近要求されていた場合、Power BI Desktop では最近のデータが使用され、視覚エフェクトの表示に必要な時間が短縮されます。 [ホーム] リボンから [更新] を選択すると、すべての視覚エフェクトが現在のデータで更新されます。

DirectQuery を使用する場合、多くのデータ モデリングとデータ変換を使用できますが、パフォーマンスに基づいたいくつかの制限があります。 DirectQuery の利点、制限、推奨事項の詳細については、Power BI での DirectQuery に関するページを参照してください。

DirectQuery の利点

DirectQuery を使用する利点としては、次のようなものがあります。

  • DirectQuery を使用すると、事前集計を使用してすべてのデータをインポートすることが不可能な非常に大きなデータセットに対して視覚化を構築できます。

  • DirectQuery レポートでは、常に現在のデータが使用されます。 基になるデータの変更を確認するにはデータを更新する必要がありますが、データを更新するために大きなデータセットを再インポートすることは不可能な場合があります。

  • 1 GB のデータセット制限は、DirectQuery には適用されません。

DirectQuery を使用して接続する

DirectQuery を使用してデータ ソースに接続するには、次の手順を行います。

  1. Power BI Desktop のリボンの [ホーム] グループで、[データの取得] を選択し、DirectQuery でサポートされているデータ ソース (SQL Server など) を選択します。

  2. 接続のダイアログ ボックスにある [データ接続モード] で、[DirectQuery] を選択します。

Import と DirectQuery のオプション、SQL Server データベース ダイアログ、Power BI Desktop

Power BI サービスに公開する

DirectQuery レポートを Power BI サービスに発行できますが、Power BI サービスでレポートを開くには追加の手順を行う必要があります。

  • Azure SQL Database、Azure Synapse Analytics (旧称 SQL Data Warehouse)、Amazon Redshift、Snowflake Data Warehouse 以外の DirectQuery データ ソースに Power BI サービスを接続するには、オンプレミス データ ゲートウェイをインストールし、データ ソースを登録します。

  • Azure SQL Database、Azure Synapse、Amazon Redshift、Snowflake Data Warehouse などのクラウド ソースで DirectQuery を使用した場合、オンプレミス データ ゲートウェイは必要ありません。 その場合でも、発行されたレポートを Power BI サービスで開くには、資格情報を提供する必要があります。 資格情報を提供しないと、発行されたレポートを開こうとしたとき、または DirectQuery に接続して作成されたデータセットを探求しようとしたときにエラーが発生します。

レポートを開いてデータを更新するために資格情報を提供するには、次の手順を行います。

  1. Power BI サービスで、右上にある歯車アイコンを選択し、[設定] を選択します。

    Power BI サービスの [設定] ドロップダウン メニューのスクリーンショット。

  2. [設定] ページで、[データセット] タブを選択し、DirectQuery を使用するデータセットを選択します。

  3. [データ ソース接続] で、データ ソースに接続するための資格情報を入力します。

Note

プライベート IP アドレスを持つ Azure SQL Database で DirectQuery を使用した場合は、オンプレミスのゲートウェイを使用する必要があります。

考慮事項と制限事項

Power BI Desktop の一部の機能は DirectQuery モードでサポートされていないか、制限があります。 また、Power BI サービスの一部の機能 (クイック分析情報など) は、DirectQuery を使用するデータセットでは使用できません。 DirectQuery を使用するかどうかを決定する際には、機能に関するこれらの制限事項を考慮してください。 また、次の要因についても検討してください。

パフォーマンスと負荷に関する考慮事項

DirectQuery ではすべての要求がソース データベースに送信されるため、ビジュアルの更新に必要な時間は、基になるソースが結果を返すのに要する時間によって異なります。 要求されたビジュアル データを受け取るまでの応答時間としては、5 秒以下が推奨されます。 更新時間が 30 秒を超えると、ユーザーがレポートを使用するためのエクスペリエンスが著しく低下します。 Power BI サービスでは、実行時間が 4 分を超えるとクエリはタイムアウトし、ユーザーはエラーを受け取ります。

ソース データベースに対する負荷は、特にレポートで行レベルのセキュリティ (RLS) が使用されている場合、発行されたレポートを使用する Power BI ユーザーの数によっても異なります。 複数のユーザーによって共有される RLS 以外のダッシュボード タイルを更新すると、1 つのクエリがデータベースに送信されます。一方、RLS を使用するダッシュボード タイルを更新するには、ユーザーごとに 1 つのクエリが必要になります。 クエリの数が増えると、負荷が大幅に増加し、パフォーマンスに影響を及ぼす可能性があります。

100 万行の制限

DirectQuery では、クラウド データ ソース (オンプレミスではないすべてのデータ ソース) から返されるデータについて 100 万行の制限が規定されています。 オンプレミスのソースは、1 行あたり約 4 MB (専用の圧縮アルゴリズムによって異なる)、またはビジュアル全体で 16 MB の定義されたペイロードに制限されます。 Power BI Premium 容量の新しい設定に関するブログ記事で説明されているように、Premium 容量では、最大行についてさまざまな制限を設定できます。

Power BI では、可能な限り効率的なクエリが作成されますが、生成される一部のクエリでは、基になるデータ ソースから取得する行数が多すぎる場合があります。 たとえば、高いカーディナリティ列を含む単純なグラフで、集計オプションを [集計しない] に設定した場合に、このような状況が発生する可能性があります。 ビジュアルの場合、列のカーディナリティは 100 万未満にするか、適切なフィルターを適用する必要があります。

行の制限は、DirectQuery が返すデータセットの選択に使用される集計および計算には適用されず、返される行に対してのみ適用されます。 たとえば、データ ソースに対して実行されるクエリは、1,000 万行を集計できます。 Power BI に返されるデータが 100 万行未満である限り、クエリは結果を正確に返します。 管理者によって異なる制限が設定されている Premium 容量を除いて、データが 100 万行を超える場合、Power BI には、 外部データ ソースに対するクエリの結果セットが、許可されている最大サイズの '1000000' 行を超えていますというエラーが表示されます。

セキュリティに関する考慮事項

既定では、発行されたレポートを Power BI サービスで利用するすべてのユーザーは、発行後に入力された資格情報を使用して、基になるデータ ソースに接続します。 これは、インポートされたデータの場合と同じです。 基になるソースで定義されているセキュリティ規則に関係なく、すべてのユーザーに同じデータが表示されます。

DirectQuery ソースで実装されたユーザーごとのセキュリティが必要な場合は、RLS を使用するか、ソースに対する Kerberos 制約付き認証を構成します。 Kerberos はすべてのソースで使用できるわけではありません。 詳細については、「Power BI での行レベルのセキュリティ (RLS)」および「Power BI サービスからオンプレミス データ ソースへの Kerberos ベースの SSO を構成する」を参照してください。

DirectQuery に関するその他の制限

DirectQuery の使用に関するその他の制限としては、次のようなものがあります。

  • Power Query エディターのクエリが複雑すぎると、エラーが発生します。 エラーを修正するには、Power Query エディターで問題のある手順を削除するか、インポート モードに切り替える必要があります。 SAP BW などの多次元ソースでは、Power Query エディターを使用できません。

  • 自動の日付/時刻の階層は、DirectQuery では使用できません。 DirectQuery モードでは、年、四半期、月、または日による日付列のドリルダウンはサポートされていません。

  • テーブルまたはマトリックスの視覚化では、DirectQuery ソースから 500 を超える行が返される場合、列は 125 に制限されます。 このような結果が返される場合、テーブルまたはマトリックスにスクロール バーが表示され、それを使用してより多くのデータを取り込むことができます。 その場合、テーブルまたはマトリックス内の列の最大数は 125 です。 1 つのテーブルまたはマトリックスに 125 を超える列を含める必要がある場合は、MINMAXFIRST、または LAST を使用するメジャーの作成を検討します。これらは、この最大値にはカウントされません。

  • インポートから DirectQuery モードに変更できません。 必要なすべてのデータをインポートする場合は、DirectQuery モードをインポート モードに切り替えることができます。 DirectQuery がサポートしていない機能セットが主な原因で、元に戻すことはできません。 SAP BW などの多次元ソースに対する DirectQuery モデルは、外部メジャーの処理が異なるため、DirectQuery からインポート モードに切り替えることもできません。

  • 計算テーブルおよび計算列で、シングル サインオン (SSO) 認証を使用してデータ ソースから DirectQuery テーブルを参照することは、Power BI サービスではサポートされていません。

次の手順