イントロダクション
使用する診断を 記録 したら、次の手順は、それらが何を言うかを理解できることです。
クエリ診断スキーマの各列の意味を十分に理解しておくと役立ちます。この短いチュートリアルでは繰り返しません。 詳細な説明がこちらにあります。
一般に、視覚化を作成する場合は、完全な詳細テーブルを使用することをお勧めします。 行の数に関係なく、おそらく見ているのは、さまざまなリソースで費やされた時間や、生成されたネイティブ クエリの内容を示す何らかの種類の表現であるためです。
診断の記録に関する記事で説明したように、同じテーブル (またはほぼ同じ) の OData トレースと SQL トレース (Northwind の Customers テーブル) を操作しています。 特に、お客様からの一般的な質問と、データ モデルの完全な更新というトレースのセットを解釈しやすいものに焦点を当てます。
視覚化の構築
トレースを確認する際には、さまざまな方法で評価できます。 この記事では、2 つの視覚化分割に重点を置いて、関心のある詳細を示し、もう 1 つはさまざまな要因の時間の寄与を簡単に確認します。 最初の視覚化では、テーブルが使用されます。 好きなフィールドを選ぶことができますが、簡単で高度な内容を確認するために推奨されるフィールドは次のとおりです。
2 つ目の視覚化では、積み上げ縦棒グラフを使用します。 'Axis' パラメーターでは、'Id' または 'Step' を使用できます。 更新を見ている場合は、エディター自体の手順とは何の関係もないため、"ID" を確認したいだけでしょう。 'Legend' パラメーターの場合は、(必要な粒度に応じて) 'Category' または 'Operation' を設定する必要があります。 [値] に [排他期間] を設定します (未加工の期間の値を取得できるように、%ではないことを確認します)。 最後に、ツールヒントの [最も早い 開始時刻] を設定します。
視覚化が作成されたら、順序を確認できるように、"最も早い 開始時刻" で昇順に並べ替えます。
正確なニーズは異なるかもしれませんが、このグラフの組み合わせは、多数の診断ファイルを見て、さまざまな目的で見始めるのに適した場所です。
視覚化の解釈
前述のように、クエリ診断で回答を試みることができる多くの質問がありますが、最も頻繁に見られる 2 つは、時間の使い方を尋ね、ソースに送信されたクエリの内容を確認することです。
時間の使い方を尋ねるのは簡単で、ほとんどのコネクタに似ています。 他の場所で説明したように、クエリ診断に関する警告は、コネクタに応じて大幅に異なる機能が表示されるということです。 たとえば、Power Query では ODBC ドライバーに送信されたもののみが表示されるため、多くの ODBC ベースのコネクタでは、実際のバックエンド システムに送信されるクエリの正確な記録はありません。
時間の使い方を確認したい場合は、上で構築した視覚化を見るだけです。
ここで使用しているサンプル クエリの時間値は非常に小さいため、Power BI で時間をレポートする方法を操作する場合は、Power Query エディターで [排他期間] 列を [秒] に変換することをお勧めします。 この変換を行うと、グラフを見て、時間がどこに費やされているかを適切に把握できます。
OData の結果の画像では、大部分の時間がソースからデータの取得に費やされたことがわかります。凡例で [データ ソース] 項目を選択すると、データ ソースへのクエリの送信に関連するすべてのさまざまな操作が表示されます。
すべての同じ操作を実行し、同様の視覚化を作成するが、ODATA トレースではなく SQL トレースを使用すると、2 つのデータ ソースがどのように比較されるかを確認できます。
ODATA 診断と同様にデータ ソース テーブルを選択すると、最初の評価 (この画像では 2.3) がメタデータ クエリを出力し、2 番目の評価では実際に関心のあるデータを取得します。 この場合は少量のデータを取得するため、プルバックされるデータには少し時間がかかります (2 番目の評価全体が発生するのに 1 秒の 10 分の 1 未満で、データ取得自体には 20 分の 1 未満)、これはすべてのケースで当てはまるわけではありません。
上記のように、凡例の [データ ソース] カテゴリを選択して、出力されたクエリを表示できます。
データの掘り下げ
パスの確認
これを見て、時間の経過が奇妙に思われる場合は、たとえば OData クエリで、次の値を持つデータ ソース クエリが表示されます。
Request:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle%20eq%20%27Sales%20Representative%27&$select=CustomerID%2CCountry HTTP/1.1
Content-Type: application/json;odata.metadata=minimal;q=1.0,application/json;odata=minimalmetadata;q=0.9,application/atomsvc+xml;q=0.8,application/atom+xml;q=0.8,application/xml;q=0.7,text/plain;q=0.7
<Content placeholder>
Response:
Content-Type: application/json;odata.metadata=minimal;q=1.0,application/json;odata=minimalmetadata;q=0.9,application/atomsvc+xml;q=0.8,application/atom+xml;q=0.8,application/xml;q=0.7,text/plain;q=0.7
Content-Length: 435
<Content placeholder>
このデータ ソース クエリは、排他期間の 1% のみを占有する操作に関連付けられています。 一方、同様のものがあります。
Request:
GET https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry HTTP/1.1
Response:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry
HTTP/1.1 200 OK
このデータ ソース クエリは、排他期間の約 75% を占有する操作に関連付けられています。 パスをオンにした場合、後者は実際には前者の子であることが分かっています。 つまり、最初のクエリでは、基本的にそれ自体に少量の時間が追加され、実際のデータ取得は "内部" クエリによって追跡されます。
これらは極端な値ですが、表示される可能性のある範囲内にあります。