Partager via


API de plateforme numérique - Résolution des problèmes de chargement BSS

Vous pouvez utiliser les méthodes de cette rubrique pour diagnostiquer les problèmes liés au chargement de vos données de segment.

Différentes phases du service de segment de lots

Cette section décrit les phases de chargement, afin que vous puissiez comprendre où les problèmes peuvent se produire.

Démarrage : URL de chargement de la demande et ID de travail

Dans cette phase, les clients demandent une URL de chargement et un ID de travail. Cette étape expire en 5 minutes. Si les travaux sont bloqués dans cette phase, cela indique que les clients ont demandé l’URL mais n’ont pas pu charger quoi que ce soit dans le délai imparti.

Téléchargement

Dans cette phase, les clients chargent le fichier dans l’URL donnée. Il est recommandé de ne pas dépasser un chargement par minute. Si les clients ont plus de 200 travaux en attente d’être traités à un moment donné, il leur sera interdit de charger des travaux supplémentaires.

Validation et traitement

Une fois que les clients ont chargé le fichier, le traitement du fichier a lieu dans la phase suivante où la validation des ID de segment et des ID utilisateur est effectuée. Si un enregistrement contient des ID d’utilisateur ou de segment non valides, la plateforme ne traite pas l’enregistrement. Lorsque les clients case activée le travail status, ils peuvent afficher des statistiques concernant le nombre d’utilisateurs non valides.

Achèvement

Au cours de cette phase, les données du fichier sont correctement chargées sur la plateforme et sont disponibles pour le ciblage.

Erreurs de chargement possibles

Tentative de chargement d’un fichier supérieur à 0,5 Go

{"response":{"status":"ERROR","error_code":"FILESIZE_LIMIT_EXCEEDED","errors":["Member exceeds maximum byte size allowed for a file"]}}

Code d’erreur dans le travail de chargement de segment de lot

""batch_segment_upload_job": {
      "phase": "error",
      "start_time": "2015-08-13 18:40:32",
      "uploaded_time": null,
      "validated_time": null,
      "completed_time": null,
      "error_code": "uploading-error",
      "time_to_process": "0.00",
      "percent_complete": 0,
      "num_valid": 0,
      "num_invalid_format": 0,
      "num_valid_user": 0,
      "num_invalid_user": 0,
      "num_invalid_segment": 0,
      "num_invalid_timestamp": 0,
      "num_unauth_segment": 0,
      "num_past_expiration": 0,
      "num_inactive_segment": 0,
      "num_other_error": 0,
      "error_log_lines": null,
      "segment_log_lines": null,
      "id": 11661553,
      "job_id": "Pm3oCUf5CSVKIOt4mAqOzdt6K3qInj1431542432",
      "member_id": 958,
      "created_on": "2015-05-13 18:40:32",
      "last_modified": "2015-05-13 18:40:33"
    }

Les erreurs suivantes peuvent se produire dans les cas suivants :

  1. Vous avez atteint l’une de ses quatre limites de chargement :

    • octets quotidiens,
    • octets horaires,
    • lignes quotidiennes, ou
    • lignes horaires

    Tentative de dépassement de la limite quotidienne de chargement d’octets

    {"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Member
                      exceeds maximum allowed bytes per day"]}}
    

    Tentative de dépassement de la limite de chargement d’octets horaire

    {"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Member
                      exceeds maximum allowed bytes per hour"]}}
    

    Tentative de dépassement de la limite de chargement de lignes quotidiennes

    {"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Member
                      exceeds maximum allowed number of lines per day"]}} 
    

    Tentative de dépassement de la limite de chargement de lignes horaires

    {"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Member
                      exceeds maximum allowed number of lines per hour"]}}
    
  2. Vous avez annulé le chargement.

  3. La phase de chargement dépasse 90 minutes. Dépassement de la durée maximale de chargement

    {"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Maximum
                      upload time exceeded"]}}
    

Erreurs de traitement possibles

Format non valide

Si la valeur du num_invalid_format champ est supérieure "0"à , case activée les valeurs du error_log_lines champ.

Dans l’exemple ci-dessous, le num_invalid_format champ affiche la valeur "1", avec les détails fournis dans le error_log_lines champ.

Dans le error_log_lines champ :

  • num_invalid_format indique qu’un problème s’est produit lors de l’analyse d’une ligne dans le fichier chargé.
  • "failed with an illegal number of fields" indique que le nombre de champs d’un segment_fields bloc ne correspond pas à ce qui a été défini dans la configuration du segment de lot (pour plus d’informations, consultez Configuration initiale du compte BSS).

Dans ce cas, la configuration s’attend à ce que trois champs soient définis dans le bloc : SEG_ID, VALUE, EXPIRATION, mais l’analyseur n’a trouvé que deux champs - SEG_ID et , affichant VALUEainsi une erreur.

num_invalid_format et error_log_lines exemple

"batch_segment_upload_job": {
phase": "completed",
"error_code": null,
"time_to_process": "0.01",
"percent_complete": 100,
"num_valid": 0,
"num_invalid_format": 1,
"num_valid_user": 0,
"num_invalid_user": 0,
"num_invalid_segment": 0,
"num_invalid_timestamp": 0,
"num_unauth_segment": 0,
"num_past_expiration": 0,
"num_inactive_segment": 0,
"num_other_error": 0,
"error_log_lines": "num_invalid_format-WINDOWSADID-USER-ID;SEG_ID:VALUE~9 failed with an illegal number of fields",
"segment_log_lines": null,
"start_time": "2015-08-13 18:40:32",
"uploaded_time": "2015-08-13 18:42:32",
"validated_time": "2015-08-13 18:42:32",
"completed_time": "2015-08-13 18:42:33",
"id": 123412341234,
"job_id": "Pm3oCUf5CSVKIOt4mAqOzdt6K3qInj1431542432",
"member_id": 958,
"created_on": "2015-08-13 18:40:32",
"last_modified": "2015-08-13 18:42:33"
}

Afficher votre historique de chargement de fichiers

Pour afficher les métadonnées relatives à tous les chargements de fichiers de segments au cours des 30 derniers jours, effectuez un GET appel au service avec votre member_id spécifié dans la chaîne de requête. La réponse JSON inclut un tableau d’objets batch_segment_upload_job .

Pour plus d’informations sur les champs spécifiques de l’objet batch_segment_upload_job , consultez Champs JSON.

Remarque

L’historique de chargement de fichiers est disponible pour les 30 derniers jours uniquement.

$ curl -b cookies 'https://api.appnexus.com/batch-segment?member_id=456'

{
   "response" : {
      "batch_segment_upload_job" : [
         {
           "phase": "completed",
            "start_time": "2012-05-22 16:48:55",
            "uploaded_time": "2012-05-22 16:48:56",
            "validated_time": "2012-05-22 16:49:01",
            "completed_time": "2012-05-22 16:49:01",
            "error_code": null,
            "time_to_process": "0.04",
            "percent_complete": 100,
            "num_valid": 0,
            "num_invalid_format": 0,
            "num_invalid_user": 2,
            "num_invalid_segment": 0,
            "num_unauth_segment": 1,
            "num_past_expiration": 0,
            "num_inactive_segment": 0,
            "num_other_error": 0,
            "error_log_lines": " \n\nnum_unauth_segment-4013681496264948522;5013:0,5014:1550\nnum_invalid_user-7652266028043224430;5848:0,5849:1440,5850:1440\nnum_invalid_user-8802117132500293405;5851:0,5847:-1",
            "id": 98,
            "job_id": "T1v98eIOlCZndeLGSXD0nrs57L8ES11337705335",
            "member_id": 456,
            "created_on": "2012-05-22 16:48:55",
            "last_modified": "2012-05-22 16:49:01"
         },
     ...
    }
  }
}

Remarque

Notre API limite les réponses à 100 objets via la pagination. Vous pouvez afficher des objets supplémentaires en ajoutant l’un d’entre eux à l’appel d’API :

  • &start_element=101
  • &sort=last_modified.desc

Pour en savoir plus sur la pagination, consultez notre portail de documentation ici.

Si vous rencontrez toujours des problèmes techniques, vous pouvez envoyer une demande sur notre portail de support client. N’oubliez pas d’inclure l’ID de travail dans votre demande de support.

Champs JSON

HTTP, méthode Endpoint Description
GET https://api.appnexus.com/batch-segment/meta Utilisez cet appel pour déterminer les champs que vous pouvez filtrer et trier.
Champs Type Description
id int Il s’agit de l’ID de l’objet batch_segment_upload_job associé à cette demande.

Valeur par défaut : nombre généré automatiquement.
status string Status de l’appel d’API ; les appels réussis retournent "OK".
batch_segment_upload_job objet Il s’agit d’un objet dont les champs contiennent des métadonnées décrivant le travail de chargement et de traitement. Si vous utilisez l’API Impbus, il s’agit d’un tableau contenant un seul objet. Pour plus d’informations, consultez Tâche de chargement de segments par lots .

Tâche de chargement de segment batch

Lorsque vous demandez la status de votre travail de traitement, le système retourne un batch_segment_upload_job objet (si vous êtes un fournisseur de données, il s’agit d’un tableau contenant un seul objet). Selon la demande que vous adressez au service, elle contient tout ou partie des métadonnées suivantes.

Remarque

La plupart des métadonnées sont uniquement présentes lorsque "phase": "completed".

Champs Type Description
upload_url string URL dans laquelle vous allez charger votre fichier de données de segment.
phase enum Status de traitement actuel.

Retourne l’une des valeurs suivantes :
- error
- starting
- uploading
- validating
- processing
- completed
start_time date Heure à laquelle le chargement du fichier a commencé.
uploaded_time date Heure à laquelle le fichier associé à cet ID de travail a été chargé.
validated_time date Heure à laquelle la validation du fichier a été effectuée.
completed_time date Heure à laquelle le traitement du fichier a été effectué.
error_code int Si la valeur est "phase": "error", ce code d’erreur décrit le type d’erreur rencontré. Notez qu’un code d’erreur s’affiche ici uniquement s’il y a eu une erreur lors du chargement, de la validation ou du traitement du fichier lui-même (c’est-à-dire qu’il n’inclut pas d’erreurs de format ou de segment non valides). Les erreurs courantes sont dues à des fichiers illisibles et au dépassement des limites d’objets définies.

Retourne null si aucune erreur n’a été trouvée.
time_to_process decimal Temps nécessaire pour traiter le fichier de segment, en minutes.
percent_complete int Pourcentage du traitement terminé, compte tenu de la phase actuelle au moment de la demande.
num_valid int Nombre de lignes valides dans le fichier chargé. Chaque combinaison utilisateur/segment est considérée comme 1 ligne.
num_invalid_format int Nombre de lignes chargées contenant des erreurs de mise en forme. Cela dépend de la configuration de votre format de fichier particulier. Les lignes dupliquées sont également considérées comme un format non valide.
num_valid_user int Nombre de lignes d’entrée uniques qui ont un ID utilisateur valide.
num_invalid_user int Nombre de lignes d’entrée uniques qui ont un utilisateur non valide ou inexistant.
num_invalid_segment int Nombre de segments non valides dans le fichier. Dédupliqué.
num_invalid_timestamp int Nombre d’horodatages non valides dans le fichier.
num_unauth_segment int Nombre de segments du fichier auxquels vous n’êtes pas autorisé à accéder. Dédupliqué.
num_past_expiration int Nombre de segments expirés dans le fichier. Dédupliqué.
num_inactive_segment int Nombre de segments inactifs dans le fichier. Dédupliqué.
num_other_error int Il s’agit d’une valeur d’espace réservé qui n’est pas utilisée actuellement.
error_log_lines string Chaîne contenant des lignes séparées par de nouvelles lignes. Chaque ligne répertorie une erreur de validation ou la raison d’une erreur lors du chargement de votre fichier.

Vous pouvez choisir le nombre de lignes qui s’affichent dans ce champ.

Par défaut : 200 lines
segment_log_lines string Chaîne contenant des lignes séparées par des lignes nouvelles composées de l’ID de segment et du nombre d’utilisateurs correctement ajoutés ou supprimés. Ce champ est 200 linesdéfini par défaut sur .
Le format est ajouté : SEG_ID:COUNT SEG_ID:COUNT ... removed: SEG_ID:COUNT ...SEG_ID est l’ID de segment et COUNT le nombre d’utilisateurs ajoutés ou supprimés avec succès. SEG_ID:COUNT les paires sont triées par COUNT (décroissant).

Exemple :
added:15889133:38622115547290:186227removed:15889278:36973415889206:25530715889179:232831
id int Identificateur unique de cet objet.
job_id string Chaîne de caractères alphanumériques qui identifie de façon unique le travail de traitement associé à ce fichier.
member_id int Votre ID de membre.

Obligatoire le : PUT, POST
created_on date Date de création de cet objet.
last_modified date Date de modification la plus récente de cet objet (généralement via POST).