Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La pagination de rapports est une fonctionnalité qui permet aux utilisateurs d’API de récupérer des rapports de longue durée qui, autrement, expireraient avant la fin du traitement. Pour plus d’informations sur les limites d’utilisation de l’API de création de rapports, consultez la section Limitation des rapports de la page Service de rapports.
La création d’un rapport plus précis avec moins de dimensions et de métriques ou l’extraction d’un rapport sur une période plus courte est généralement la meilleure option pour s’assurer qu’un rapport n’expire pas. Pour obtenir des conseils sur la façon de conserver vos rapports simples et ciblés, consultez la page Meilleures pratiques d’API .
Toutefois, dans certains cas, il n’est pas pratique de modifier les dimensions, les métriques ou la période. La pagination de rapport peut vous aider à combler l’écart et à récupérer un rapport de longue durée en blocs plus petits.
Champs obligatoires de pagination de rapport
La fonctionnalité nécessite que vous incluiez trois champs dans le corps de votre demande JSON (pour plus d’informations, consultez les exemples) :
| Champ | Type | Description |
|---|---|---|
"offset" |
int | Numéro de ligne à partir duquel ce rapport doit commencer. |
"num_elements" |
int | Nombre total de lignes que ce rapport doit retourner. |
"orders" |
tableau de chaînes | Ordre des dimensions dans le rapport. |
Implémentation de la pagination de rapport
Si vous avez utilisé le système de pagination de l’API pour récupérer des objets de configuration à partir de l’API (comme décrit dans la section Pagination de sémantique de l’API), cette fonctionnalité doit vous être familière.
Le "num_elements" champ est utilisé pour spécifier le nombre de lignes dans chaque « page » du rapport et n’a pas de valeur maximale, mais doit être réglé sur un nombre qui permet au rapport de traiter sans expiration.
Le "offset" champ doit commencer à 0 et doit être incrémenté en multiples de "num_elements" jusqu’à ce que toutes les lignes du rapport aient été récupérées. Lorsque le rapport est récupéré, s’il y n-1 a ou moins de lignes dans le rapport (où n est égal à la valeur dans "num_elements"), vous avez demandé toutes les lignes disponibles dans le rapport. S’il existe n des lignes, vous devez demander un autre rapport paginé.
Avertissement
Le "orders" champ doit inclure un ordre pour toutes les dimensions incluses dans votre rapport. Si vous envoyez une demande pour un rapport paginé sans le "orders" champ ou sans toutes les dimensions du rapport, il se peut que des lignes de données soient manquantes ou qu’il vous manque des lignes de données entre les demandes paginées de votre rapport.
Combien de lignes devez-vous récupérer à la fois ?
Comme le champ n’a pas de "num_elements" valeur maximale, vous pouvez ajuster ce nombre par rapport au temps nécessaire à l’exécution d’un rapport dans le siège de membre spécifique que vous récupérez. La plupart des rapports volumineux peuvent être récupérés en toute sécurité avec le "num_elements" champ défini sur une valeur comprise entre 1MM lignes et 2MM de lignes, mais vous devez tester cette valeur pour votre propre rapport.
Exemples
Étape 1 : Create le rapport paginé JSON
Ce rapport particulier se compose de deux demandes de rapport : report_page_1.json et report_page_2.json.
Remarque
Les demandes sont identiques, sauf pour le "offset" champ et que le "orders" champ est obligatoire.
$ 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
}
}
Étape 2 : Envoyer les demandes
$ 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": {
...
}
}
}
Étape 3 : Vérifier que les deux rapports traitent
$ 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": {
...
}
}
}
Étape 4 : Télécharger les rapports terminés
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
Étape 5 : Vérifier que le nombre de lignes correspond au nombre total de lignes
$ wc -l report_page_1.csv
2000000 report_page_1.csv
$ wc -l report_page_2.csv
1834708 report_page_2.csv