レポートの改ページ
レポートの改ページは、API ユーザーが処理を完了する前にタイムアウトする実行時間の長いレポートを取得できるようにする機能です。 API の使用制限のレポートの詳細については、「レポート サービス」ページの「レポート調整」セクションを参照してください。
ディメンションとメトリックが少ないより詳細なレポートを作成するか、短い時間枠でレポートをプルすることが、通常、レポートがタイムアウトしないようにするための最適なオプションです。レポートを無駄がなく集中させ続けるヒントについては、 API のベスト プラクティス に関するページを参照してください。
ただし、場合によっては、ディメンション、メトリック、または時間枠を変更することは実用的ではありません。 レポートの改ページはギャップを埋めるのに役立ち、実行時間の長いレポートをより小さなチャンクで取得できます。
レポートページ分割の必須フィールド
この機能では、JSON 要求の本文に 3 つのフィールドを含める必要があります (詳細については、 例を参照してください)。
フィールド | 種類 | 説明 |
---|---|---|
"offset" |
int | このレポートの開始元の行番号。 |
"num_elements" |
int | このレポートが合計で返す必要がある行数。 |
"orders" |
文字列の配列 | レポート内のディメンションの順序。 |
レポート改ページの実装
API のページング システムを使用して API から構成の要求を取得している場合 (「API セマンティクス」の「ページング」セクションで説明されているように)、この機能は使い慣れていると感じるはずです。
フィールドは "num_elements"
、レポートの各 "ページ" 内の行数を指定するために使用され、最大値はありませんが、タイムアウトなしでレポートを処理できる数値に調整する必要があります。
フィールドは "offset"
0 から始まり、レポートのすべての行が取得されるまで の "num_elements"
倍数でインクリメントする必要があります。 レポートを取得するときに、レポートに行が n-1
存在するか、または少ない場合 (の n
値 "num_elements"
と等しい場合)、レポートで使用可能なすべての行が要求されます。 行がある場合は n
、別のページ分割されたレポートを要求する必要があります。
警告
フィールドには "orders"
、レポートに含まれるすべてのディメンションの順序が含まれている必要があります。 ページ分割されたレポートに対する要求をフィールドなしで "orders"
送信した場合、またはレポート内のすべてのディメンションがない場合は、データ行が見つからないか、ページ分割されたレポートの要求の間でデータ行が複製されている可能性があります。
一度に取得する必要がある行の数はいくつですか?
フィールドには "num_elements"
最大値がないため、取得する特定のメンバー シートでレポートを実行するのにかかる時間に対してこの数値を調整する必要があります。 ほとんどの大きなレポートは、フィールドを "num_elements"
1MM 行から 2MM 行の間の値に設定して安全に取得できますが、その値は独自のレポートでテストする必要があります。
例
手順 1: ページ分割されたレポート JSON を作成する
この特定のレポートは、 と report_page_2.json
の 2 つのレポート要求でreport_page_1.json
構成されます。
注:
要求はフィールドを除いて "offset"
同一であり "orders"
、フィールドは必須です。
$ cat report_page_1.json
{
"report": {
"report_type":"network_site_domain_performance",
"start_date" : "2014-03-27",
"end_date" : "2014-03-28",
"groups":[
"advertiser_id"
],
"columns":[
"day",
"buyer_member_id",
"advertiser_id",
"line_item_id",
"campaign_id",
"top_level_category_name",
"top_level_category_id",
"second_level_category_name",
"second_level_category_id",
"deal_id",
"deal_name",
"deal_code",
"site_domain",
"imps",
"clicks",
"post_click_convs",
"post_view_convs",
"media_cost",
"booked_revenue"
],
"row_per":[
"day",
"buyer_member_id",
"advertiser_id",
"line_item_id",
"campaign_id",
"top_level_category_id",
"second_level_category_id",
"deal_id",
"site_domain"
],
"orders": [
"day",
"buyer_member_id",
"advertiser_id",
"line_item_id",
"campaign_id",
"top_level_category_id",
"second_level_category_id",
"deal_id",
"site_domain"
],
"offset": 0,
"num_elements": 2000000
}
}
$ cat report_page_2.json
{
"report":{
"report_type":"network_site_domain_performance",
"start_date" : "2014-03-27",
"end_date" : "2014-03-28",
"groups":[
"advertiser_id"
],
"columns":[
"day",
"buyer_member_id",
"advertiser_id",
"line_item_id",
"campaign_id",
"top_level_category_name",
"top_level_category_id",
"second_level_category_name",
"second_level_category_id",
"deal_id",
"deal_name",
"deal_code",
"site_domain",
"imps",
"clicks",
"post_click_convs",
"post_view_convs",
"media_cost",
"booked_revenue"
],
"row_per":[
"day",
"buyer_member_id",
"advertiser_id",
"line_item_id",
"campaign_id",
"top_level_category_id",
"second_level_category_id",
"deal_id",
"site_domain"
],
"orders": [
"day",
"buyer_member_id",
"advertiser_id",
"line_item_id",
"campaign_id",
"top_level_category_id",
"second_level_category_id",
"deal_id",
"site_domain"
],
"offset": 2000000,
"num_elements": 2000000
}
}
手順 2: 要求を送信する
$ curl -b cookie -c cookie -X POST -s -d @report_page_1.json "https://api.appnexus.com/report"
{
"response": {
"status": "OK",
"report_id": "6b7a44dc1b3f8bc47cd4d8sd32e4f841c",
"existing": true,
"dbg_info": {
...
}
}
}
$ curl -b cookie -c cookie -X POST -s -d @report_page_2.json "https://api.appnexus.com/report"
{
"response": {
"status": "OK",
"report_id": "700367274ae2c84b337436a4absdd835",
"existing": true,
"dbg_info": {
...
}
}
}
手順 3: 両方のレポート プロセスを確認する
$ curl -b cookie -c cookie -s "https://api.appnexus.com/report?id=6b7a44dc1b3f8bc47cd4d8sd32e4f841c"
{
"response": {
"status": "OK",
"report": {
"name": null,
"created_on": "2014-04-10 23:01:36",
"cache_hit": false,
"fact_cache_hit": false,
"fact_cache_error": "did not find any cache table for 1,2,30,31,66,32,34,36,6,4,5,100,110",
"json_request": "{\"report\":{\"report_type\":\"network_site_domain_performance\",\"start_date\":\"2014-03-27\",\"end_date\":\"2014-03-28\",\"groups\":[\"advertiser_id\"],\"columns\":[\"day\",\"buyer_member_id\",\"advertiser_id\",\"line_item_id\",\"campaign_id\",\"top_level_category_name\",\"top_level_category_id\",\"second_level_category_name\",\"second_level_category_id\",\"deal_id\",\"deal_name\",\"deal_code\",\"site_domain\",\"imps\",\"clicks\",\"post_click_convs\",\"post_view_convs\",\"media_cost\",\"booked_revenue\"],\"row_per\":[\"day\",\"buyer_member_id\",\"advertiser_id\",\"line_item_id\",\"campaign_id\",\"top_level_category_id\",\"second_level_category_id\",\"deal_id\",\"site_domain\"],\"orders\":[\"day\",\"buyer_member_id\",\"advertiser_id\",\"line_item_id\",\"campaign_id\",\"top_level_category_id\",\"second_level_category_id\",\"deal_id\",\"site_domain\"],\"offset\":0,\"num_elements\":2000000,\"filters\":[{\"buyer_member_id\":958}]}}",
"header_info": "Report ID:,6b7a44dc1b3f8bc47cd4d8e32e4f841c\r\nRun at:,2014-04-10 23:01:36\r\nStart date:,2014-03-27 00:00:00\r\nEnd date:,2014-03-28 00:00:00\r\nTimezone:,\r\nUser:,Uri Bushey (123456)\r\n",
"row_count": "2000000",
"report_size": "248161427",
"url": "report-download?id=6b7a44dc1b3f8bc47cd4d8e32e4f841c"
},
"execution_status": "ready",
"dbg_info": {
...
}
}
}
$ curl -b cookie -c cookie -s "https://api.appnexus.com/report?id=700367274ae2c84b337436a4absdd835"
{
"response": {
"status": "OK",
"report": {
"name": null,
"created_on": "2014-04-10 23:01:41",
"cache_hit": false,
"fact_cache_hit": false,
"fact_cache_error": "did not find any cache table for 1,2,30,31,66,32,34,36,6,4,5,100,110",
"json_request": "{\"report\":{\"report_type\":\"network_site_domain_performance\",\"start_date\":\"2014-03-27\",\"end_date\":\"2014-03-28\",\"groups\":[\"advertiser_id\"],\"columns\":[\"day\",\"buyer_member_id\",\"advertiser_id\",\"line_item_id\",\"campaign_id\",\"top_level_category_name\",\"top_level_category_id\",\"second_level_category_name\",\"second_level_category_id\",\"deal_id\",\"deal_name\",\"deal_code\",\"site_domain\",\"imps\",\"clicks\",\"post_click_convs\",\"post_view_convs\",\"media_cost\",\"booked_revenue\"],\"row_per\":[\"day\",\"buyer_member_id\",\"advertiser_id\",\"line_item_id\",\"campaign_id\",\"top_level_category_id\",\"second_level_category_id\",\"deal_id\",\"site_domain\"],\"orders\":[\"day\",\"buyer_member_id\",\"advertiser_id\",\"line_item_id\",\"campaign_id\",\"top_level_category_id\",\"second_level_category_id\",\"deal_id\",\"site_domain\"],\"offset\":2000000,\"num_elements\":2000000,\"filters\":[{\"buyer_member_id\":958}]}}",
"header_info": "Report ID:,700367274ae2c84b337436a4ab80b835\r\nRun at:,2014-04-10 23:01:41\r\nStart date:,2014-03-27 00:00:00\r\nEnd date:,2014-03-28 00:00:00\r\nTimezone:,\r\nUser:,Uri Bushey (12345)\r\n",
"row_count": "1834708",
"report_size": "226384504",
"url": "report-download?id=700367274ae2c84b337436a4ab80b835"
},
"execution_status": "ready",
"dbg_info": {
...
}
}
}
手順 4: 完成したレポートをダウンロードする
curl -b cookie -c cookie -s "https://api.appnexus.com/report-download?id=6b7a44dc1b3f8bc47cd4d8sd32e4f841c' > report_page_1.csv
curl -b cookie -c cookie -s "https://api.appnexus.com/report-download?id=700367274ae2c84b337436a4absdd835' > report_page_2.csv
手順 5: 行数が合計行数と一致することを確認する
$ wc -l report_page_1.csv
2000000 report_page_1.csv
$ wc -l report_page_2.csv
1834708 report_page_2.csv