次の方法で共有


データ エクスプローラーの詳細モードに関する基本的な情報

Important

データ エクスプローラー機能は、パブリックプ レビューです。 今後もお客様からのご意見をもとに、最適化を進めていきたいと考えています。

データ エクスプローラーの高度なモードは、アドホック データ探索用に最適化された SQL に似た言語である Azure Data Explorer クエリ言語を使用して、より複雑なクエリとより深い分析情報を得ることができます。 非技術的なクエリの記述方法については、「データ エクスプローラー基本モードの基本的な情報」チュートリアルを参照してください。

カスタム クエリを作成する

詳細モードで独自のクエリを作成するには、まず、アクセスするデータの形状を理解することが重要です。

events.all テーブル

events.all テーブルは、すべての受信イベント向けの既定の送信先です。 これは、時間およびイベント名などの共通の値の列を持つ、単一の半構造テーブルです。 EventData 列には、オリジナルの JSON ペイロードがすべて含まれているためすぐに親しむことができ、ほとんどすべてのクエリで使用できます。 events.all テーブルに関する以下のドキュメントをご覧ください。

クエリの分析調査

最も一般的なクエリ式は、テーブルの名前で始まります。 その後にパイプ区切り記号 (|) が続きます。 次に、1 つ以上の演算子が表示されます。 各演算子は、パイプ区切り記号で区切られます。

式

好みの問題として、クエリは 1 行で表現することも、各パイプ区切り記号の前に行の戻り値を使用することもできます。 クエリ自体に違いはありません。

クエリ ウィンドウ

クエリ ウィンドウには、複数のクエリを含めることができます。 これにより簡単に、シンプルな式で開始し、実行を検証し、その上に構築できます。

空白行を使って 1 つのクエリを別のクエリから分離します。 カーソルの位置によって、[実行] ボタンを押したときに実行されるクエリが決まります。 クエリの一部を強調表示して、その式のみを実行することもできます。

実行

最初のクエリを構築する

最初のクエリをゼロから作成してみましょう。 クエリ ウィンドウにテーブル名を入力できます。 ただし、少しショートカットを使用します。 [リソース] ウィンドウで events.all テーブルを探します。 場合によっては、矢印をクリックしてタイトル ID データベースを展開する必要があります。

Events.all テーブル

events.all テーブルが見つかったら、テーブル名をダブルクリックします。 この式がクエリ ウィンドウに追加されていることがわかります。

注意

プレビューでは、テーブル名の周囲に角かっこと単一引用符を手動で追加する必要があります。 このご不便をおかけする問題は修正中です。

['events.all']
| 

名前を囲む角かっこと単一引用符に注意してください。 テーブル名または列名に "." が含まれる場合 これらは必須です。 カーソルが、最初の演算子を作成するための正しい位置にあります。 take 演算子の使用を開始しましょう。

['events.all']
| take 100

このクエリを実行します。 結果ウィンドウに 100 行の生データが表示されるようになりました。

[結果] ウィンドウで、上部の行を選択します。 右矢印を使用して、FullName_Name列に移動します。 これは、イベントの名前です。 player_logged_inイベントが見つかるまで下方向キーを押します。 見つかったら、EventData 列に右矢印を付けてダブルクリックします。 こちらが表示されます。

イベント データ列

クエリでは、ドット表記 (.) を使用して EventData JSON 内の任意のプロパティを参照できます。 1 人のプレイヤーから player_logged_in イベントのみを返すようにクエリを変更することで、これを今すぐ試すことができます。 EntityID GUID をダブルクリックし、クリップボードにコピーします。

次に、次のようにクエリを更新し、コピーした GUID を挿入します。

['events.all']
| where FullName_Name == 'player_logged_in'
| where Entity_Id == 'paste from clipboard here'

ヒント

二重等号は、文字列の等価性を評価するために使用されます。 先頭と末尾の単一引用符は、文字列を区別します。

クエリを実行すると、[結果] ウィンドウに、選択したプレイヤーの player_logged_in イベントのみが表示されます。 ドット表記を使用すると、各レイヤー間にドットを追加するだけで、JSON 階層の複数の入れ子になったレイヤーを参照できます。

次に、プレイヤーのログインをリージョン別にグループ化する 2 番目のクエリを作成しましょう。 書き込んだ内容を削除せずに、Return キーを 2 回押します。 "//" を使用して、次のクエリにコメントを追加しましょう。 コメントは実行されるものではなく、各クエリの背後にある意図を追跡するのに役立ちます。

//Player logins by platform

もう一度、リソース ウィンドウから events.all テーブルをダブルクリックします。 今回は、過去 3 日間にクエリのスコープを設定する時間区切り記号を式に追加してみましょう。

//Player logins by platform
['events.all']
| where Timestamp > ago(30d)
| where FullName_Name == 'player_logged_in'

このクエリを実行して、過去 3 日間のすべてのサインイン イベントの完全な一覧を取得します。 ただし、イベントの数ではなく、ログインした個別のプレイヤーの数を知りたいと考えています。 これを行うには、エンティティ ID で個別の演算子を使用します。

['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| distinct Entity_Id

このクエリは、過去 3 日間にログインしたエンティティ ID の一覧を返します。 [結果] ウィンドウにはレコードの数が表示されるため、合計数が表示されます。

レコード

次に、各プラットフォームからログインしたプレイヤーの数を取得しましょう。 これを行うには、EventData JSON のプラットフォーム プロパティによってグループ化されたエンティティ ID の個別の数が必要です。 これには、 summarize 演算子が必要です。 summarize は動的な型をサポートしていないため、プラットフォームを文字列にキャストする必要もあります。

['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| summarize dcount(Entity_Id) by tostring(EventData.Platform)

それでは、もう少しお気に入りの作業を終えましょう。 1 つの式を追加することで、結果を縦棒グラフとしてレンダリングできます。

['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| summarize dcount(Entity_Id) by tostring(EventData.Platform)
| render columnchart

クエリ

サンプル クエリ

エクスプローラーで作成できるクエリの種類のサーフェイスのみを作成しました。 その他のクエリの例は、[What's This] を押してエクスプローラー ページから読み込むことができます。 これらの各サンプル クエリは、使用可能なさまざまな演算子の一部と、それらが実際の質問にどのように適用されるかを示すために選択されます。

注意

データの形状はデモ データ セットとは異なる場合があるため、シナリオに合わせて実行するようにサンプル クエリを変更する必要がある場合があります。

制限

エクスプローラー クエリの使用を管理するには 2 つの制限があります。

  1. 最大クエリ実行時間: 個々のクエリは 30 秒を超えて実行することはできません。 この制限を超えた場合、クエリは終了され、エラー メッセージが表示されます。

  2. 間隔使用: 各タイトルの累積合計ランタイムは、指定した 10 分間隔ごとに 3 分許可されます。 この制限を超えた場合、エラー メッセージが表示され、追加クエリが実行されるまで待機する必要があります。

データ保有期間

既定では、データ エクスプローラーのクエリはホット ストレージ上で実行されますが、これは管理ツールで構成できます。 ホット ストレージに格納されているデータを超えて検索するクエリは、実行時間が大幅に長くなり、タイムアウトすることもあります。