2017-04-12 4 views
1

Analytics APIの結果を「ページング」できますか?Azure Application Insights Analytics APIのページ結果

私は次のクエリ(HTTPポストを介した)

{ 
"query":"customEvents | project customDimensions.FilePath, timestamp 
     | where timestamp > now(-100d) | order by timestamp desc | limit 25" 
} 

を使用している場合は、私は戻って1つの結果セット10,000までの結果を取得します。イベントAPIの$ skipに似た何かを使う方法はありますか? 「SKIP 75 TAKE 25」のように、結果の4ページ目を取得します。

答えて

2

[編集:この回答は古くなりました。クエリ言語にrow_number関数が追加されました。この回答は、誰かがこの回答のような奇妙なクエリに遭遇した場合、歴史的な目的のために残されています]

容易にはです。

/eventsパスの代わりに/ events ODATAクエリパスを使用できる場合は、ページングをサポートしています。あなたのような本当のカスタムクエリはありません。

は、ページングのようなものを取得するには、複雑なクエリを作成し、 summarizemakeListを使用して、クエリで rowNumフィールドを発明し、リストを再展開する mvexpandを使用し、 rowNumでフィルタする必要があります。私は、クエリ言語でページング事業者をサポートするためのappinsightsのユーザーボイスの要求が既に存在だと信じ

customEvents 
| project customDimensions.FilePath, timestamp 
| where timestamp > now(-100d) 
| order by timestamp desc 
// squishes things down to 1 row where each column is huge list of values 
| summarize filePath=makelist(customDimensions.FilePath, 1000000) 
    , timestamp=makelist(timestamp, 1000000) 
    // make up a row number, not sure this part is correct 
    , rowNum = range(1,count(strcat(filePath,timestamp)),1) 
// expands the single rows into real rows 
| mvexpand filePath,timestamp,rowNum limit 1000000 
| where rowNum > 0 and rowNum <= 100 // you'd change these values to page 

:それは何かのように、かなり複雑でわかりにくいのです。

ここで他の前提はです。仕事をしている間に基礎となるテーブルのデータは変更されません。 50新しい行が

  • は私に行100-199
  • を与える表示され、新しいデータが

    1. のように、あなたの呼び出しの間に表示された場合は、私に行0-99
    2. を与えるステップ3はです実際にはは、手順1でちょうど得た重複行を50に戻します。

    1

    moこれを行うには、以前の答えからクエリ言語に追加された新しい演算子を使用してください。

    2つの演算子はserializerow_number()です。

    serializeは、データがrow_number()で動作する形と順序であることを保証します。 order byのような既存の演算子の中には、すでにシリアル化されたデータを作成しているものがあります。

    さらに、シリアル化された結果の前または次の行から値を取得できる演算子がprev()およびnext()です。

    関連する問題