Power BIでクエリ診断を記録する

Power Queryでクエリを作成する場合、基本的なワークフローは、データ ソースに接続し、いくつかの変換を適用し、Power Query エディターでデータを更新してから、Power BI モデルに読み込む方法です。 データが Power BI モデルに入った後は、サービスで行った更新とは別に、Power BI Desktop で随時更新できます (Desktop を使用して分析を表示している場合)。

作成ワークフローの最後に同様の結果が得られる場合もあれば、エディターで更新したり、適切なPower BI更新したりすることもできますが、ソフトウェアは提供するさまざまなユーザー エクスペリエンスに対して非常に異なる評価を実行します。 さまざまな診断データに驚かないように、これらの異なるワークフローでクエリ診断を行うときに何を期待するかを知っていることが重要です。

クエリ診断を開始するには、Power Query エディターリボンの [ ツール ] タブに移動します。 いくつかの異なるオプションが表示されます。

Power Query エディター リボンのスクリーンショット。

2 つの主要なオプションを使用できます。 [診断ステップ ] と [診断の開始 ] ( [診断の停止] と組み合わせて)。 前者のオプションは、選択したステップまでのクエリに関する情報を提供し、クエリでローカルまたはリモートで実行される操作を理解するのに最も役立ちます。 後者のオプションを使用すると、次のセクションで説明する、他のさまざまなケースに関するより多くの洞察を得ることができます。

コネクタの詳細

この記事では、クエリ診断で使用できるさまざまな順列については説明しません。 次のような多くのことが表示される結果を変更できます。

  • Connector
  • 適用された変換
  • 実行しているシステム
  • ネットワーク構成
  • 高度な構成の選択
  • ODBC 構成

できるだけ幅広く扱うため、この記事では SQL と OData の両方における Northwind Customers テーブルのクエリ診断に焦点を当てています。 OData ノートでは、 OData.org Web サイトにあるパブリック エンドポイントが使用されますが、SQL サーバーを自分で指定する必要があります。 多くのデータ ソースは、これらのソースとは大きく異なります。 時間の経過と同時に、Microsoftコネクタ固有のドキュメントが追加されます。

診断の開始と停止

[診断の開始] コマンドと [診断の停止] コマンドでは、診断ステップよりも多くのシナリオがカバーされます。 また、それらは、あなたが選り分ける必要のある、より多くの情報も提供します。 たとえば、診断の開始、プレビューの更新、診断の停止は、すべてのステップで 診断ステップ を実行する場合と同等の情報を提供します。 この等価性は、エディターで各ステップを個別に更新するPower Queryのしくみが原因で存在します。

記録を開始するには、[ 診断の開始] を選択し、必要な評価 (作成、プレビュー更新、完全更新) を実行してから、[ 診断の停止] を選択します。

オーサリング

オーサリング ワークフローは、通常、より多くの個別の評価を生成するという点で、主に他のワークフローとは異なります。 主要なクエリ診断に関する記事で説明したように、これらの評価は、ナビゲーターやフィルタードロップダウンなどのさまざまなユーザー インターフェイスを設定した結果です。

このセクションでは、例について説明します。 この例では OData コネクタを使用していますが、出力を確認するときは、同じデータベースの SQL バージョンも確認します。 どちらのデータ ソースでも、新しいソース、最近使用したソース、またはデータの取得を使用してデータ ソースに接続します。 SQL 接続の場合は、サーバーの資格情報を入力する必要がありますが、パブリック OData エンドポイントの場合は、先ほどリンクしたエンドポイントを入力できます。

OData 接続を示すスクリーンショット。

接続して認証を選択したら、OData サービスから Customers テーブルを選択します。

Northwind ナビゲーションを示すスクリーンショット。

Power Query インターフェイスに Customers テーブルが表示されます。 さまざまな国または地域に存在する営業担当者の数を知りたいとします。 まず、[連絡先のタイトル] 列で営業担当者を右クリックし、テキスト フィルターの上にマウス を置き、[等しい] を選択します。

テキスト フィルター オプションを示すスクリーンショット。

次に、リボンから [グループ化] を選択し、でグループ化して集計をCountにします。

[グループ化] 操作を示すスクリーンショット。

次の図と同じデータが表示されます。

結果を示すスクリーンショット。

最後に、リボンの [ ツール ] タブに戻り、[ 診断の停止] を選択します。 このアクションにより、トレースが停止され、診断ファイルがビルドされます。 概要テーブルと詳細テーブルが左側に表示されます。

オーサリング セッション全体をトレースすると、一般に、ソース クエリの評価、関連するナビゲーターに関連する評価、および適用する各ステップに対して少なくとも 1 つのクエリが出力されます (正確な UX アクションによって異なる可能性があります)。 一部のコネクタでは、パフォーマンス上の理由から並列評価が行われ、同様のデータ セットが生成されます。

プレビューの更新

データの変換が完了したら、クエリに一連のステップを作成します。 Power Query エディターで [プレビューの更新] または [すべて更新] を選択すると、クエリ診断に 1 つのステップしか表示されません。 Power Query エディターで更新すると、最後のステップが適用されたクエリが明示的に更新されます。 次に、適用された手順に戻り、その時点までクエリを更新してソースに戻します。

このプロセスは、ソースとナビゲーターを含むクエリに 5 つのステップがある場合、診断に 5 つの異なる評価が表示されることを意味します。 最初の評価は、時系列で見ると、多くの場合(ただし必ずしもそうとは限りません)最も時間がかかります。 2 つの異なる理由により、この期間が長くなります。

  • その後に実行されるクエリ(ユーザー クエリ内の前段の手順を表す)がローカルでより高速にアクセスできるように、入力データをキャッシュする可能性があります。
  • 返されるデータの量を大幅に切り捨てる変換が適用されています。

[ すべて更新] を選択すると、すべてのクエリが更新されます。 当然ですが、必要なものに絞り込む必要があります。

完全更新

クエリ診断を使用すると、Power Query エディターエクスペリエンスだけでなく、Power BIの更新中に生成されるいわゆる最終的なクエリを診断できます。 これを行うには、最初にデータをモデルに 1 回読み込む必要があります。 これを行う場合は、閉じて適用 を選択するとエディター ウィンドウが閉じて(トレースが中断される)ことを理解しておいてください。そのため、2 回目の更新時に実行するか、閉じて適用 の下にあるドロップダウン アイコンを選択して、代わりに 適用 を選択する必要があります。

クエリの変更を適用するボタンを示すスクリーンショット。

どちらの方法でも、エディターの [ツール] タブの [診断] セクションで [診断の開始] を選択してください。 このオプションを選択した場合は、モデルを更新するか、気になるテーブルだけを更新します。

[データの更新] オプションを示すスクリーンショット。

データのモデルへの読み込みが完了したら、[ 診断の停止] を選択します。

メタデータ クエリとデータ クエリの組み合わせがいくつか表示されます。 メタデータ呼び出しは、データ ソースに関して可能な情報を取得します。 データの取得は、データ ソースにアクセスし、折りたたまれた操作を使用して最終的に構築されたデータ ソース クエリを出力し、その後、一番上に不足している評価をローカルで実行することです。

診断にリソース (データベース、Web エンドポイントなど) またはデータ ソース クエリが表示されるからといって、必ずしもネットワーク アクティビティを実行しているわけではないことに注意してください。 Power Queryは、キャッシュからこの情報を取得できます。

診断手順

[ステップの診断] 機能では、1 つのステップまでどのような評価が行われるかについての分析情報が提供されます。 この情報は、そのステップに対するパフォーマンスの検索方法と、クエリのどの部分がローカルまたはリモートで実行されるかを識別するのに役立ちます。

前に作成したクエリで [診断ステップ ] を使用すると、約 10 行が返されることがわかります。 データ ソース クエリで最後の行を見ると、データ ソースに対して最終的に出力されたクエリがどのように表示されるかを明確に把握できます。 この場合、Power Queryは営業担当者をリモートでフィルター処理しますが、グループ化はローカルで行われます。

フィルター処理された Customers テーブルとグループ化された Customers テーブルを示すスクリーンショット。

診断を開始および停止し、同じクエリを更新すると、40 行が取得されます。 前述のように、Power Queryは最後のステップだけでなく、すべてのステップに関する情報を取得します。 この動作により、クエリの特定の部分に関する分析情報を取得するのが困難になります。