Power BI Desktop を利用すれば、データ ソースに接続するとき、常にデータのコピーを Power BI Desktop にインポートできます。 データ ソースによっては、代替手法を利用できます。DirectQuery でデータ ソースに直接接続する方法です。

サポートされているデータ ソース

現在サポートされているデータソースは次のとおりです。

DirectQuery を使用して接続する方法

[データの取得] を使用し、DirectQuery でサポートされているデータ ソースに接続すると、接続ウィンドウが開きます。このウィンドウで、接続方法を選択できます。

ImportDirectQuery の選択の違いは次のようになります。

インポート – 選択したテーブルと列は Power BI Desktop にインポートされます。 視覚エフェクトを作成するか、操作するとき、Power BI Desktop はインポートされたデータを使用します。 初回インポートまたは最近の更新以降、変更された基礎データを確認するには、データを更新し、完全データ セットをもう一度インポートする必要があります。

DirectQueryPower BI Desktop にデータがインポートまたはコピーされることはありません。 選択したテーブルと列が、[フィールド] の一覧に表示されます。 視覚エフェクトを作成するか、操作するとき、Power BI Desktop は基礎データ ソースに問い合わせるので、現在のデータが常に表示されることになります。

いくつかの制約がありますが、DirectQuery を利用するとき、さまざまなデータ モデリングとデータ変換を利用できます。 視覚エフェクトを作成するか、操作するとき、基礎ソースに問い合わせる必要があります。視覚エフェクトの更新に必要な時間は基礎データ ソースのパフォーマンスに依存します。 要求の処理を必要となるデータが最近要求されているとき、Power BI Desktop は最近のデータを利用し、視覚エフェクトの表示に必要な時間を短縮します。 [ホーム] リボンの [更新] を選択すると、すべての視覚エフェクトが現在のデータで更新されます。

DirectQuery 使用の利点、制限、重要な考慮事項については、次のセクションを参照してください。

DirectQuery を使用する利点

DirectQuery を使用する場合の利点は次のとおりです。

  • DirectQuery なら、他の方法では全データをインポートすること自体が不可能なほど大きなデータセットでも視覚化を作成できます。

  • 元になるデータが変更されるとデータの更新が必要になる場合があり、レポートによっては、現在のデータを表示しなければならない場合に大きなデータの転送が必要になって、データの再インポートが不可能になることがあります。 対照的に、 DirectQuery レポートは常に現在のデータを使用します。

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

DirectQuery の制限

現在、 DirectQueryの使用には、いくつかの制限があります。

  • テーブルはすべて 1 つのデータベースのものでなければなりません。

  • クエリ エディターのクエリが複雑すぎるとエラーが発生します。 エラーを解決するには、問題となるステップをクエリ エディターで削除するか、DirectQuery を使用する代わりにデータを*インポート*する必要があります。

  • リレーションシップ フィルタリングは、双方向ではなく、一方向に制限されます。

  • タイム インテリジェンス機能は DirectQuery では利用できません。 たとえば、データ列 (年度、四半期、月、日など) の特殊な処理は DirectQuery モードではサポートされていません。

  • 既定では、メジャーで許可される DAX 式に制約があります。詳しくは、次の段落をご覧ください。

  • DirectQuery を使用した場合の返されるデータには 100 万行の制限があります。 これは DirectQuery を使用して返されるデータセットの作成に使用される集計や計算には影響せず、返される行のみに影響します。 たとえば、データ ソースに対して実行すクエリで 1,000 万行を集計し、その集計の結果のデータが 100 万行未満であれば、DirectQuery を使用して、Power BI に正確に返すことができます。 DirectQuery から 100 万行を超える行が返された場合、Power BI はエラーを返します。

基になるデータ ソースに送信されるクエリが許容範囲のパフォーマンスを発揮できるよう、既定ではメジャーに制限が課されています。 詳しい知識のあるユーザーなら、[ファイル] > [オプション] >、次に [設定] > [オプション] > [DirectQuery] の順に選んでから、オプション *[DirectQuery モードで無制限のメジャーを許可する]** を選べば、この制限を回避できます。 このオプションを選ぶと、メジャーに使用できる DAX 式ならどれでも使用できるようになります。 しかし、ユーザーが注意すべき点として、データのインポート時のパフォーマンスが非常に良好な式の中には、DirectQuery モードでバックエンド ソースにクエリを実行する際に非常に低速になるものがあります。

DirectQuery を使用する場合の重要な考慮事項

DirectQuery の使用時には次の 3 点を考慮してください。

  • パフォーマンスと負荷 - DirectQuery 要求はすべて、ソース データベースに送信されます。そのため、ビジュアルの更新に必要な時間は、そのバックエンド ソースがクエリの結果を返す時間に依存します。 ビジュアルの場合、DirectQuery 使用の推奨応答時間 (要求したデータが返される時間) は 5 秒以内です。最大推奨応答時間は 30 秒です。 それ以上長くなると、レポート使用のユーザー エクスペリエンスが許容範囲外になります。 また、レポートを Power BI サービスに公開すると、数分かかるクエリはタイムアウトとなり、エラーがユーザーに送信されます。

    ソース データベースの負荷も、公開されたレポートを使用する Power BI ユーザーの数に基づき考慮してください。 行レベルのセキュリティ (RLS) を使用した場合も大きな影響があります。RLS 以外のダッシュボード タイルを複数のユーザーが共有した場合、1 件のクエリがデータベースに実行されますが、ダッシュボード タイルで RLS を使用することは、通常、タイルの更新には、*ユーザー*あたり 1 クエリ必要になることを意味します。そのため、ソースデータベースに大きな負荷がかかり、パフォーマンスに影響を与える可能性があります。

    Power BI では、可能な限り効率的なクエリが作成されます。 ただし、特定の状況では、生成されたクエリは十分に効率的ではなく、更新が失敗することがあります。 たとえば、生成されたクエリがバックエンド データ ソースから過度に大量の行 (100 万以上) を取得することがあります。その場合、次のエラーが発生します。

    The resultset of a query to external data source has exceeded
    the maximum allowed size of '1000000' rows.
    

    このような状況は、基数が非常に高い列を含む簡単なグラフで集計オプションが [Don’t Summarize] (集計しない) に設定されている場合に発生します。 ビジュアルの場合、列の基数は 100 万未満にする必要があります。あるいは、適切なフィルターを適用する必要があります。

  • セキュリティ - 公開されたレポートを利用するユーザーは全員、Power BI サービスに公開した後に入力された資格情報を利用し、バックエンド データ ソースに接続します。 これはインポートされたデータと同じ状況になります。バックエンド ソースに定義されているセキュリティ ルールに関係なく、すべてのユーザーに同じデータが表示されます。

  • サポートされている機能 - Power BI Desktop の一部の機能は DirectQuery モードでサポートされていないか、制限があります。 また、Power BI サービスには、DirectQuery 使用時のデータセットで利用できない機能もあります (*クイック分析情報*など)。 そのため、DirectQuery を利用するかどうかを判断するとき、以上のような DirectQuery 利用時の機能制約を考慮する必要があります。

Power BI サービスに公開する

DirectQuery を使用して作成したレポートを Power BI サービスに発行できます。

使用されるデータ ソースが Azure SQL Database または Azure SQL Data Warehouseの場合、公開したレポートを Power BI サービスに表示する前に資格情報を入力する必要があります。

資格情報を入力するには、Power BI の [設定] 歯車アイコンを選択し、 [設定]を選択します。

Power BI に [設定] ウィンドウが表示されます。 そこから、 [データセット] タブを選択し、 DirectQueryを使用するデータセットを選択し、 [資格情報を編集]を選択します。

資格情報を入力せずに、公開したレポートを開いたり、 Azure SQL Database または Azure SQL Data Warehouse との DirectQuery 接続で作成されたデータセットを調べたりすると、エラーが発生します。

DirectQuery を使用する Azure SQL Database または Azure SQL Data Warehouse 以外のデータ ソースについては、Enterprise Gateway をインストールし、データ ソースを登録してデータ接続を確立する必要があります。 Enterprise Gateway の詳細をご覧いただけます