Download PDF
Download page 分析イベント API.
分析イベント API
AppDynamics の分析では、分析データをさまざまな種類のソース(エージェントでインストゥルメント化された Java アプリケーション、.NET アプリケーション、ブラウザアプリケーションなど)から収集するために組み込みサポートを提供します。分析イベント API は、カスタムのデータソースとイベントタイプで組み込みの分析データソースを補完します。
アプリケーション エージェントによってパブリッシュされたトランザクションイベントに加えて、分析イベント API によって収集されたカスタムイベントは従量制です。
分析イベント API について
分析では、イベントによって分析データの単位がカプセル化されます。たとえば、APM では、各イベントが、エントリポイントサービスまたはダウンストリームサービスのいずれであるかに関係なく、メソッドまたはサービス呼び出しに対応します。
分析 API を使用して、データストア内の独自のカスタムイベントの構造を定義します。また、カスタムソースで発生するイベントレコードをキャプチャし、それらをイベントサービス(分析用のデータストア)に送信します。データがイベントストアに格納されると、ユーザはコントローラ UI または分析イベント API を使用してデータをクエリできます。
分析イベント API は、共有キーを使用して、クライアントをイベントサービスに認証します。コントローラまたは分析管理者として、コントローラ UI から API キーを生成できます。詳細については、API キーの管理を参照してください。
イベントサービス API を使用するには、トランザクション分析ライセンスが必要です。カスタムイベントのビジネストランザクションに適用されるものと同じライセンスモデル(単位/日あたりのイベント数に基づく)が API に適用されます。
イベント サービス データ ストアへの対処
コントローラに表示されるほとんどの AppDynamics REST API とは異なり、分析イベント API へは AppDynamics プラットフォームでイベント サービス インスタンスに対処することでアクセスします。
次のいずれかの URL でイベントサービスに対処します。
地域 | URL |
---|---|
北米 | https://analytics.api.appdynamics.com |
ヨーロッパ | https://fra-ana-api.saas.appdynamics.com |
APAC | https://syd-ana-api.saas.appdynamics.com |
"https://<events_service_endpoint>:9080/events/"
オンプレミス イベント サービスの場合は、イベント サービス インスタンス ホスト(または、イベントサービスクラスタのロードバランサで提示される仮想 IP の場合も多くあります)に対処します。イベントサービスには、プライマリ デフォルト リスニング ポート 9080 を使用します。
分析イベント API へのコールでは、対処するコントローラのアカウントに <global_accountp_name>
と、このクライアントの管理者が生成した <api_key>
を指定する必要があります。API は、ヘッダーにプロパティと値のペアをコロンで区切った値を想定します。たとえば、cURL 引数には次のように `-H`
または `--header
` オプションを使用して curl とともに値が渡されます。
-H"X-Events-API-AccountName:<global_account_name>" -H"X-Events-API-Key:<api_key>"
コントローラ UI の [License] ページから、使用するグローバルアカウント名を取得できます。API キーについては、「API キーの管理」で説明します。
また、コンテンツタイプも次のように cURL 引数として指定できます。
-H"Content-type: application/vnd.appd.events+json;v=2"
AppDynamics では、API へのアクセスに SSL/HTTPS を使用することを強くお勧めします。SSL/HTTPS 以外を使用する場合は、API キーがプレーンテキスト形式で送信されます。
セキュリティ上の理由から、分析イベント API がデフォルトで cross-origin HTTP リクエストを受け入れることはありません。たとえば、Web ページに直接埋め込まれたリンクからのリクエストなどです。
データ形式
分析イベント API は、JSON 形式の名前と値のペアデータとしてイベントを取得します。
カスタムイベントスキーマに準拠したデータを送信する前に、カスタムスキーマのデータ構造を定義する必要があります。イベントサービスは、着信イベントデータを適切なスキーマと照合します。
サポートされるデータ型
- ブール
- 日付:サポートされている時刻形式は次のとおりです。
- ISO 8601 形式:
yyyy-MM-dd'T'HH:mm:ss.SSSZZ
。 - UNIX エポックの日付形式:13 桁の数字で、UNIX エポック時刻(1970 年 1 月 1 日)以降の秒/ミリ秒時間を表します。たとえば、(GMT): Mon, 17 Apr 2017 23:46:22 GMT は 1492472782000 となります。
- ISO 8601 形式:
- 浮動小数点数(Float)
- 整数(Integer)
- オブジェクト
- 文字列
命名制限
カスタムイベント名とフィールド名は、次の条件に従う必要があります。
- a ~ z、A ~ Z、_(下線)、0 ~ 9 のみを使用します。
- 名前を数値で始めることはできません。
タイムスタンプフィールド
カスタムスキーマには、次の 2 つの暗黙的なタイムスタンプフィールドが自動的に追加されます。
eventTimestamp
pickupTimestamp
eventTimestamp
フィールドは、イベントが発生した時刻を表します。API クライアントは、イベントを作成するときにタイムスタンプフィールドの値を指定できます。指定できない場合、Analytics Events API は別の暗黙のフィールド pickupTimestamp
に使用する値と同じ eventTimestamp
の値を使用します。pickupTimestamp
フィールドは必ずイベントサービスで入力され、イベントサービスによってイベントが受信された時間が表示されます。
ビジネスジャーニーでマイルストーンを設定する場合は、イベントを登録するために、eventTimestamp
フィールドに日付を指定する必要があります。カスタムイベントを使用してビジネスジャーニーを定義するには、カスタムイベントで eventTimestamp
フィールドを送信する必要があります。送信しない場合、ビジネスジャーニーは機能しません。
AppDynamics は、カスタムスキーマに自動的に追加されない別のタイムスタンプ(eventcompletionTimestamp
)を使用します。eventcompletionTimestamp
フィールドは、イベントが終了する時刻を表します。通常、AppDynamics は、このフィールドを内部的に使用して、長時間実行されているイベントを正確に報告します。
ISO 8601 または UNIX エポック時刻(64 ビットミリ秒)形式を使用して、すべてのタイムスタンプフィールドを表すことができます。
API コールフローの例
次の手順に従って、分析イベント API を使用するためのオンプレミス API コールワークフローを実行します。この手順では、スキーマの作成、そのスキーマへのイベントのパブリッシュ、およびイベントのクエリに関する cURL の例を示します。
SaaS での展開では、例に挙げた URL およびポートの値(<events_service_endpoint>:9080
)を SaaS の URL に置き換えてください。
フィールド名とデータ型を関連付けて、スキーマを定義します。たとえば、次のように購入イベントタイプを定義します。
curl -X POST "<events_service_endpoint>:9080/events/schema/myProducts" -H"X-Events-API-AccountName:customer1_1234-567a-bccc-123" -H"X-Events-API-Key:a123b456-c789-1d23-e456-nnn" -H"Content-type: application/vnd.appd.events+json;v=2" -d '{"schema" : { "id": "string", "productBrand": "string", "userRating": "integer", "price": "float", "productName": "string", "description": "string" } }'
CODE作成したスキーマに基づいてイベントをパブリッシュします。
curl -X POST "<events_service_endpoint>:9080/events/publish/myProducts" -H"X-Events-API-AccountName:customer1_1234-567a-bccc-123" -H"X-Events-API-Key:a123b456-c789-1d23-e456-nnn" -H"Content-type: application/vnd.appd.events+json;v=2" -d '[{"id": "5653b879ab33a","productBrand": "ACME","userRating": 3,"price": 2006.41,"productName": "Watch","description": "new watch"},{"id": "5653b879700","productBrand": "Widget","userRating": 1,"price": 3800.13,"productName": "Watch","description": "2015 watch"}]'
CODEイベントデータをクエリします。
curl -X POST "http://<events_service_endpoint>:9080/events/query" -H"X-Events-API-AccountName:customer1_7xxx-467a-bccc-xxx" -H"X-Events-API-Key:a123b456-c789-1d23-e456-nnn" -H"Content-type: application/vnd.appd.events+text;v=2" -d 'SELECT * FROM myProducts'
CODE
ADQL キーワードが含まれたフィールドを追加する場合は、キーワードを一重引用符で囲みます。これらのキーワードには、between
、in
、select
などがあります。
クエリ要求が 1 つの場合は、次のコンテンツタイプを使用します。
-H"Content-type: application/vnd.appd.events+text;v=2"
クエリ要求が複数の場合は、クエリが JSON 本文テキストとして渡されます。この場合は、次のコンテンツタイプヘッダーを使用します。
-H"Content-type: application/vnd.appd.events+json;v=2"
カスタムイベントの取り込み制限
コントローラによるカスタムイベントの取り込みには、次の制限があります。
- フィールド:イベントタイプごとに最大 255
- 文字列属性:最大長 4 KB
- バッチ総数:コールあたり 10,000 イベント
- バッチ合計サイズ:コールあたり最大 5 MB
- アカウントの最大カスタムイベントスキーマ数:20
- ビジネスジャーニースキーマは 20 の制限に対してカウントされます。
カスタムイベント制限の追加
カスタムイベント制限の追加は、SaaS イベントサービスバージョン 4.5.13 以降で使用できます。オンプレミスのイベントサービスは、カスタムフィールドイベントの最大値 1,500 個を超えることはできません。
イベントサービスでは、デフォルトで最大 1,500 個のカスタムフィールドを作成できます。カスタムフィールドの容量が 80%(1,200 フィールド)に達すると、次のインデックスロールオーバー時に最大フィールド制限が 500 フィールド増加します。
たとえば、1,400 カスタムフィールドに到達すると、最大フィールド制限が 1,500 フィールドから 2,000 フィールドに増加します。その後 1,800 カスタムフィールドに到達すると、最大制限数が 2,500 フィールドに増加します。
作成できるカスタムフィールドの上限は 3,000 個です。最大フィールド数に到達したり、最大フィールド数を超えたりすると、遅延や停止が発生する可能性があります。
イベントのパブリッシュ
Publish Events API コールは、イベントの配列を取得し、イベントサービスストレージに格納します。データは既存のスキーマに準拠している必要があります。1 つの要求を複数のイベントタイプにパブリッシュすることはできません。
イベントデータがイベントスキーマと一致しない場合、イベントサービスは両者が一致するためのベストエフォート型の試みを行い、それでも失敗した場合は「400 Bad Request」を返します。
形式
POST https://analytics.api.example.com/events/publish/{schemaName}
POST http://<events_service_endpoint>:9080/events/publish/{schemaName}
クエリパラメータ
該当なし
パスパラメータ
名前 | 説明 |
---|---|
| アカウント ID |
schemaName | イベントスキーマ名 |
ヘッダー
名前(Name) | 説明 |
---|---|
X-Events-API-AccountName | [Controller UI License] ページに表示されるグローバルアカウント名。 |
X-Events-API-Key | 分析 API キー。API キーの管理を参照してください |
Content-Type | 要求本文の Content-Type 。デフォルトは、リソース表現(v=2)のバージョンでもある application/vnd.appd.events+json;v=2 です。 |
SaaS による Publish の例
POST https://analytics.api.example.com/events/publish/{schemaName}
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
Content-Type: application/vnd.appd.events+json;v=2 Accept: application/vnd.appd.events+json;v=2
[
{
"id": "5653b879ab33a",
"productBrand": "ACME",
"userRating": 3,
"price": 2006.41,
"productName": "Watch",
"description": "new watch"
},
{
"id": "5653b879700",
"productBrand": "Widget",
"userRating": 1,
"price": 3800.13,
"productName": "Watch",
"description": "2015 watch"
}
]
HTTP/1.1 202 ACCEPTED
エラー コード
Error Code | 説明 |
---|---|
400 | 指定した要求は無効でした。 |
401 | 認証ヘッダーで指定した認証情報は無効でした。 |
404 | このアカウントのイベントタイプが見つかりませんでした。 |
406 | Accept ヘッダーは application/vnd.appd.events+json;v=2 ではありませんでした。 |
413 | 要求本文のサイズが最大許容値を超えています。 |
415 | Content-Type ヘッダーは application/vnd.appd.events+json;v=2 ではありませんでした。 |
429 | 要求が多すぎます。account または event が制限に達した場合に返されます。 |
イベントスキーマを作成する
独自のイベントスキーマを作成するには、この API を使用します。このスキーマで、フィールドとタイプごとにイベントタイプの全体的な構造を定義します。
この API は、アップロードするイベントが、最初のクラスイベントタイプ(ログやトランザクションなど)の既存のスキーマと一致しない場合にのみ使用する必要があります。既存のスキーマに準拠したイベントは、そのスキーマに自動的に一致します。このトピックより前に記載されている、サポートされるデータ型および命名制限を確認してください。
形式
POST https://analytics.api.example.com/events/schema/{schemaName}
POST http://<events_service_endpoint>:9080/events/schema/{schemaName}
パスパラメータ
名前(Name) | 説明 |
---|---|
accountId | アカウント ID |
schemaName | イベントスキーマ名 |
クエリパラメータ
該当なし
ヘッダー
名前(Name) | 説明 |
---|---|
X-Events-API-AccountName | [Controller UI License] ページに表示されるグローバルアカウント名。 |
X-Events-API-Key | 分析 API キー。API キーの管理を参照してください |
Accept | 応答本文の Content-Type 。サポートされる値は、application/vnd.appd.events+json;v=2 です。 |
Content-type | 要求本文の Content-Type 。デフォルトは、リソース表現(v=2)のバージョンでもある application/vnd.appd.events+json;v=2 です。 |
SaaS による Create の例
POST http://analytics.api.example.com/events/schema/{schemaName} HTTP/1.1
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
Content-Type: application/vnd.appd.events+json;v=2
Accept: application/vnd.appd.events+json;v=2
{
"schema" : {
"account": "integer",
"amount": "float",
"product": "string"
}
}
HTTP/1.1 201 CREATED
イベントスキーマを取得する
既存のイベントスキーマを取得するには、この API を使用します。
形式
GET http://analytics.api.example.com/events/schema/{schemaName}
GET http://<events_service_endpoint>:9080/events/schema/{schemaName}
パスパラメータ
名前(Name) | 説明 |
---|---|
accountId | アカウント ID |
schemaName | イベントスキーマ名 |
クエリパラメータ
該当なし
ヘッダー
名前(Name) | 説明 |
---|---|
X-Events-API-AccountName | [Controller UI License] ページに表示されるグローバルアカウント名。 |
X-Events-API-Key | 分析 API キー。API キーの管理を参照してください |
Accept | 応答本文の Content-Type 。サポートされる値は、application/vnd.appd.events+json;v=2 です。 |
SaaS による Retrieve の例
GET http://analytics.api.example.com/events/schema/{schemaName} HTTP/1.1
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
Accept: application/vnd.appd.events+json;v=2
HTTP/1.1 200 OK
{
"schema" : {
"account": "integer",
"amount": "float",
"product": "string"
}
}
イベントスキーマを更新する
フィールドごとに既存のイベントスキーマを更新するには、この API を使用します。要求本文で、イベントスキーマに適用される更新内容を定義します。
次の例に示すように、各フィールドの更新アクションを要求本文の名前付きセクションとして指定します。アクションは次のフィールドで表されます。
- 追加フィールド
- 名前変更フィールド
追加フィールドを定義する場合は、イベントスキーマを作成する場合と同じように、新しいフィールドのデータ形式を指定する必要があります。
このコールへの応答は、変更された完全なイベントスキーマである必要があります。
形式
PATCH http://analytics.api.example.com/events/schema/{schemaName}
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
PATCH http://<events_service_endpoint>:9080/events/schema/{schemaName}
パスパラメータ
名前(Name) | 説明 |
---|---|
accountId | アカウント ID |
schemaName | イベントスキーマ名 |
クエリパラメータ
該当なし
ヘッダー
名前(Name) | 説明 |
---|---|
X-Events-API-AccountName | [Controller UI License] ページに表示されるグローバルアカウント名。 |
X-Events-API-Key | 分析 API キー。「API キーの管理」を参照してください。 |
Accept | 応答本文の Content-Type 。サポートされる値は、application/vnd.appd.events+json;v=2 です。 |
Content-type | 要求本文の Content-Type 。デフォルトは、リソース表現(v=2)のバージョンでもある application/vnd.appd.events+json;v=2 です。 |
SaaS による Update の例
PATCH http://analytics.api.example.com/events/schema/{schemaName} HTTP/1.1
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
Content-type: application/vnd.appd.events+json;v=2
Accept: application/vnd.appd.events+json;v=2
[
{
"add": {
"newfield": "integer"
},
"rename": {
"oldname": "newname",
"oldname2": "newname2"
}
}
]
HTTP/1.1 200 OK
イベントスキーマを削除する
既存のイベントスキーマを削除するには、この API を使用します。
形式
DELETE http://<events_service_endpoint>:9080/events/schema/{schemaName}
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
DELETE http://<events_service_endpoint>:9080/events/schema/{schemaName}
パスパラメータ
名前(Name) | 説明 |
---|---|
accountId | アカウント ID |
eventType | イベントスキーマ名 |
クエリパラメータ
該当なし
ヘッダー
名前(Name) | 説明 |
---|---|
X-Events-API-AccountName | [Controller UI License] ページに表示されるグローバルアカウント名。 |
X-Events-API-Key | 分析 API キー。API キーの管理を参照してください |
Accept | 応答本文の Content-Type 。サポートされている値は次のとおりです。 application/vnd.appd.events+json;v=2 |
SaaS による Delete 要求の例
DELETE http://analytics.api.example.com/events/schema/{schemaName} HTTP/1.1
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
Accept: application/vnd.appd.events+json;v=2
イベントのクエリ
分析イベントデータをクエリする場合は、次の条件が適用されます。
すべてのイベントサービス API で、各イベントタイプのアカウントごとに 1 分あたり 200 件の検索制限があります。
- クエリが複数あるイベント API では、HTTP リクエストごとのクエリが 20 個に制限されます。
分析クエリ API は、最大で 1 万件の結果を返すことができます。データを超えてページを取得する場合は、スクロールモードを使用できます。スクロールモードは、バッチあたり 1,000 件の結果に制限されます。
スクロールモードは、クエリイベント(複数のクエリ)では使用できません。
- 集約クエリと非集約クエリでは、制限の動作が異なります。ADQL クエリで指定された制限値はバケットカウントの制限値として使用するため、全体の結果カウント制限値として使用することはできません。したがって、URL のパラメトリック制限が全体的な制限に使用されます。非集約クエリの場合はバケットの制限がないため、ADQL クエリで指定された制限値が行数の制限として取得され、URL のパラメトリック制限は、ADQL クエリで制限が指定されていない場合に 2 番目の選択肢となります。
- 集約クエリの場合、返される行の合計数は URL クエリパラメータの制限によって制限され、ADQL クエリステートメント自体に指定された制限値には直接関連しません。ADQL クエリの制限値は、集約クエリのバケットカウントにのみ適用されます。
- 非集約クエリの場合、
LIMIT
がSELECT
ステートメントで指定されていなければ、URL クエリパラメータで指定された値が使用されます。制限クエリパラメータも存在しない場合、デフォルト値は 100 になります。
クエリイベント(単一クエリ)
この API は、単純なテキスト形式のクエリまたは JSON 形式のクエリとして使用できます。JSON 形式のクエリはコールあたり複数のクエリに対応でき、クエリイベント(複数のクエリ)で説明されます。
1 つのイベントタイプで、複数のイベントタイプに対する検索を実行できます。したがって、イベントタイプは URL パスにもクエリパラメータとしても指定されていませんが、要求本文に指定された ADQL クエリに含まれています。ADQL クエリは、ADQL リファレンス で説明されている構文に従う必要があります。
ここでは、イベントをクエリするための単一クエリフォームについて説明します。
形式
POST http://analytics.api.example.com/events/query?limit=20
POST http://<events_service_endpoint>:9080/events/query
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
Content-type: application/vnd.appd.events+text;v=2
クエリパラメータ
名前(Name) | 説明 |
---|---|
start | ISO 8601 時間(https://en.wikipedia.org/wiki/ISO_8601)または Unix 時間(http://en.wikipedia.org/wiki/Unix_time)で指定された最小イベントタイムスタンプに基づいて、結果をフィルタリングします。指定しない場合、デフォルトでは最小タイムスタンプのフィルタリングが行われません。返されるデータは常にデータ保持によって制限されることに注意してください。 UTC 日時形式またはエポック ミリ秒を組み合わせて時刻を指定します。 開始時刻には、タイムスタンプの制限が含まれます。 |
end | ISO 8601 時間(https://en.wikipedia.org/wiki/ISO_8601)または Unix 時間(http://en.wikipedia.org/wiki/Unix_time)で指定された最大イベントタイムスタンプに基づいて、結果をフィルタリングします。指定しない場合、デフォルトでは最大タイムスタンプのフィルタリングが行われません。 返されるデータは常にデータ保持によって制限されます。 UTC 日時形式またはエポック ミリ秒を組み合わせて時刻を指定します。 終了時刻には、タイムスタンプの制限が含まれます。 |
limit | 返される結果の数を制限します。デフォルト値は 100 です。取得できる結果の上限は 1,000 件です。 |
mode | デフォルトモードは none です。スクロールモードを使用して、バルクデータを取得し、10,000 を超える ADQL 結果をページ分割できます。クエリで制限が指定されていない限り、API はイベントサービスが最大制限数を超えても取得できるようにします。デフォルトモードでは集約をサポートしていますが、スクロールモードでは集約や算術演算をサポートしていません。クエリによる順序付けは、スクロールモードでサポートされます。 スクロールクエリによってバッチに結果が返されます。すべての要求応答には、次のバッチの結果を取得するために次の要求で渡す必要がある |
ヘッダー
名前(Name) | 説明 |
---|---|
X-Events-API-AccountName | [Controller UI License] ページに表示されるグローバルアカウント名。 |
X-Events-API-Key | 分析 API キー。「API キーの管理」を参照してください。 |
Accept | 応答本文の Content-Type 。サポートされる値は、application/vnd.appd.events+json;v=2 です。 |
Content-type | 要求本文の Content-Type 。デフォルトは、リソース表現(v=2)のバージョンでもある application/vnd.appd.events+json;v=2 です。 |
SaaS による Query の例
POST http://analytics.api.example.com/events/query?start=1422823420000&end=1423687476000&limit=20000 HTTP/1.1
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
Content-Type: application/vnd.appd.events+text;v=2
Accept: application/vnd.appd.events+json;v=2
SELECT * FROM county WHERE size>=30 AND population>20000
HTTP/1.1 200 OK
{
"total": 10000,
"fields": [
{ "label": "eventTimestamp", "field": "eventTimestamp", "type": "date", "aggregation": null },
{ "label": "size", "field": "size", "type": "integer", "aggregation": null },
{ "label": "population", "field": "population", "type": "integer", "aggregation": null },
{ "label": "pickupTimestamp", "field": "pickupTimestamp", "type": "date", "aggregation": null }
],
"results": [
[ "2015-01-03T23:55:39.801-08:00", 35, 47500, "2015-02-11T19:52:28.805Z" ],
...
]
}
curl -s -X POST "<events_service_endpoint>:<events_service_port>/events/query?start=1422823420000&end=1423687476000" \
-H"X-Events-API-Key:<api_key>" \
-H"X-Events-API-AccountName:<global_account_name>" \
-H"Content-Type:application/vnd.appd.events+text;v=2" \
-H"Accept:application/vnd.appd.events+json;v=2" \
-d"[{
\"query\": \"SELECT eventTimestamp, pagename FROM browser_records ORDER BY eventTimestamp DESC\",
\"mode\": \"scroll\"
}]"
[{"label":"0","fields":[{"label":"agentid".........,[],[],[],[],[]]],"moreData":true,"scrollid":"MCwxMDAwMDAsMTAwMCxEbkYxWlhKNVZHaGxia1psZEdOb0JBQUFBQUFERW1pbUZqZ3RVakpNUkRKVFVVSkxVbkU1ZEROVlpqRkNhVUVBQUFBQUExQkF6QlpJY1hCM1dqVTNWbEp6UTBOaUxUZHlRbkJJZVZoM0FBQUFBQU11Q1dJV1N6VlpUbFZvV1Y5Uk15MUhSbXRSVTFScWRVWkNkd0FBQUFBQzF4TTZGbGRXYW1FMU5HNUVVazk1WVdaUWVXWlRlSEZLZFZFPQ==","schema":"browserrecord"}]
フォローアップの要求は、最初の応答と後続の応答で返される scrollid
値にも依存します。
curl -s -X POST "<events_service_endpoint>:<events_service_port>/events/query?start=1422823420000&end=1423687476000" \
-H"X-Events-API-Key:<api_key>" \
-H"X-Events-API-AccountName:<global_account_name>" \
-H"Content-Type:application/vnd.appd.events+text;v=2" \
-H"Accept:application/vnd.appd.events+json;v=2" \
-d"[{
\"query\": \"SELECT eventTimestamp, pagename FROM browser_records ORDER BY eventTimestamp DESC\",
\"mode\": \"scroll\",
\"scrollid\":\"MCwxMDAwMDAsMTAwMCxEbkYxWlhKNVZHaGxia1psZEdOb0JBQUFBQUFERW1pbUZqZ3RVakpNUkRKVFVVSkxVbkU1ZEROVlpqRkNhVUVBQUFBQUExQkF6QlpJY1hCM1dqVTNWbEp6UTBOaUxUZHlRbkJJZVZoM0FBQUFBQU11Q1dJV1N6VlpUbFZvV1Y5Uk15MUhSbXRSVTFScWRVWkNkd0FBQUFBQzF4TTZGbGRXYW1FMU5HNUVVazk1WVdaUWVXWlRlSEZLZFZFPQ==\"
}]"
クエリイベント(複数のクエリ)
特定のアカウントとイベントタイプに対し複数のクエリを並行して実行するには、この API を使用します。複数のクエリを指定するクエリイベントは、要求本文に複数の ADQL クエリを含めることで実行されます。ADQL クエリは、ADQL リファレンス で説明されている構文に従う必要があります。
このフォームでクエリを使用すると、クエリのパフォーマンスにおいて特定のバックエンドの最適化を利用できます。時間範囲や制限などのクエリフィルタ条件は、内部クエリごとに上書きできます。
クエリが複数あるイベント API では、HTTP リクエストごとのクエリが 20 個に制限されます。
形式
POST http://analytics.api.example.com/events/query?limit=20
POST http://<events_service_endpoint>:9080/events/query
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
パスパラメータ
なし
クエリパラメータ
名前(Name) | 説明 |
---|---|
start | ISO 8601 時間または Unix 時間で指定されたイベントタイムスタンプの最小値に基づいて、結果をフィルタリングします。指定しない場合、デフォルトでは最小タイムスタンプのフィルタリングが行われません。 UTC 日時形式またはエポック ミリ秒を組み合わせて時刻を指定します。 開始時刻には、タイムスタンプの制限が含まれます。 |
end | ISO 8601 時間または Unix 時間で指定されたイベントタイムスタンプの最大値に基づいて、結果をフィルタリングします。指定しない場合、デフォルトでは最大タイムスタンプのフィルタリングが行われません。 UTC 日時形式またはエポック ミリ秒を組み合わせて時刻を指定します。 終了時刻には、タイムスタンプの制限が含まれます。 |
limit | 返される結果の数を制限します。デフォルト値は 100 です。取得できる結果の上限は 1 万件です。 |
ヘッダー
名前(Name) | 説明 |
---|---|
X-Events-API-AccountName | [Controller UI License] ページに表示されるグローバルアカウント名。 |
X-Events-API-Key | 分析 API キー。「API キーの管理」を参照してください。 |
Accept | 応答本文の Content-Type 。サポートされる値は、application/vnd.appd.events+json;v=2 です。 |
Content-type | 要求本文の Content-Type 。デフォルトは、リソース表現(v=2)のバージョンでもある application/vnd.appd.events+json;v=2 です。 |
ペイロード
フィールド | 説明 |
---|---|
label | (オプション)クエリを識別するためのフレンドリ名。 |
クエリ | 実行する ADQL クエリ。 |
開始 | (オプション)クエリパラメータとして指定された開始パラメータ値をオーバーライドします。 |
終了 | (オプション)クエリパラメータとして指定された終了パラメータ値をオーバーライドします。 |
limit | (オプション)クエリパラメータとして指定された制限値をオーバーライドします。 |
SaaS による Multiple Query の例
POST http://analytics.api.example.com/events/query?limit=100 HTTP/1.1
X-Events-API-AccountName:<global_account_name>
X-Events-API-Key:<api_key>
Content-Type: application/vnd.appd.events+json;v=2
Accept: application/vnd.appd.events+json;v=2
[
{
"label": "high_population",
"query": "SELECT * FROM county WHERE population>50000",
"limit": 10,
"start": "2017-02-23T0:0:0Z",
"end": "2017-03-1T0:0:0Z"
},
{
"label": "small_area",
"query": "SELECT * FROM county WHERE size<25",
"start": "2017-02-23T0:0:0Z",
"end": "2017-03-1T0:0:0Z"
},
{
"label": "high_population_density",
"query": "SELECT * FROM county WHERE population>50000 AND size<25",
"limit": 100,
"start": "2017-02-23T0:0:0Z",
"end": "2017-03-1T0:0:0Z"
}
]
HTTP/1.1 200 OK
[
{
"label": "high_population",
"total": 30,
"fields": [ ... ],
"results": [ ... ]
},
{
"label": "small_area",
"total": 50,
"fields": [ ... ],
"results": [ ... ]
},
{
"label": "high_population_density",
"total": 10,
"fields": [ ... ],
"results": [ ... ]
}
]