Compartir a través de


API de plataforma digital: solución de problemas de cargas de BSS

Puede usar los métodos de este tema para diagnosticar cualquier problema con la carga de datos del segmento.

Diferentes fases del servicio de segmento de lote

En esta sección se describen las fases de carga, para que pueda comprender dónde pueden producirse problemas.

Inicio: dirección URL de carga de solicitudes e identificador de trabajo

En esta fase, los clientes solicitan una dirección URL de carga y un identificador de trabajo. Esta fase agota el tiempo de espera en 5 minutos. Si los trabajos se bloquean en esta fase, indica que los clientes solicitaron la dirección URL, pero no pudieron cargar nada dentro del tiempo asignado.

Cargar

En esta fase, los clientes cargan el archivo en la dirección URL especificada. Se recomienda no superar una carga por minuto. Si los clientes tienen más de 200 trabajos esperando ser procesados en un momento dado, se les prohibirá cargar trabajos adicionales.

Validación y procesamiento

Una vez que los clientes cargan el archivo, el procesamiento del archivo se produce en la siguiente fase donde se lleva a cabo la validación de identificadores de segmento e identificadores de usuario. Si un registro contiene identificadores de usuario o segmento no válidos, la plataforma no procesa el registro. Cuando los clientes comprueben el estado del trabajo, podrán ver estadísticas sobre el número de usuarios no válidos.

Terminación

En esta fase, los datos del archivo se cargan correctamente en la plataforma y están disponibles para la segmentación.

Posibles errores de carga

Intento de cargar un archivo de más de 0,5 GB

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

Código de error en el trabajo de carga de segmentos por lotes

""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"
    }

Los siguientes errores pueden producirse cuando:

  1. Ha alcanzado uno de sus cuatro límites de carga:

    • bytes diarios,
    • bytes por hora,
    • líneas diarias, o
    • líneas por hora

    Intento de superar el límite de carga de bytes diario

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

    Intento de superar el límite de carga de bytes por hora

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

    Intento de superar el límite de carga de líneas diarias

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

    Intento de superar el límite de carga de líneas por hora

    {"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Member
                      exceeds maximum allowed number of lines per hour"]}}
    
  2. Ha cancelado la carga.

  3. La fase de carga supera los 90 minutos. Superación del tiempo máximo para cargar

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

Posibles errores de procesamiento

Formato no válido

Si el valor del num_invalid_format campo es mayor que "0", compruebe los valores del error_log_lines campo.

En el ejemplo siguiente, el num_invalid_format campo muestra un valor de "1", con los detalles proporcionados en el error_log_lines campo .

En el error_log_lines campo :

  • num_invalid_format indica que se produjo un problema al analizar una línea en el archivo cargado.
  • "failed with an illegal number of fields" indica que el número de campos de un segment_fields bloque no coincidía con lo que se definió en la configuración de segmentos por lotes (para obtener más información, vea Configuración inicial de la cuenta de BSS).

En este caso, la configuración espera que se definan tres campos en el bloque: SEG_ID, VALUE, , EXPIRATION, pero el analizador solo encontró dos campos: SEG_ID y VALUE, lo que muestra un error.

num_invalid_format y error_log_lines ejemplo

"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"
}

Ver el historial de carga de archivos

Para ver los metadatos sobre todas las cargas de archivos de segmento en los últimos 30 días, realice una GET llamada al servicio con member_id el especificado en la cadena de consulta. La respuesta JSON incluirá una matriz de batch_segment_upload_job objetos.

Para obtener más información sobre los campos específicos del batch_segment_upload_job objeto, consulte Campos JSON.

Nota:

El historial de carga de archivos solo está disponible durante los últimos 30 días.

$ 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"
         },
     ...
    }
  }
}

Nota:

Nuestra API limita las respuestas a 100 objetos a través de la paginación. Para ver objetos adicionales, anexe uno de estos objetos a la llamada API:

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

Puede obtener más información sobre la paginación en nuestro Portal de documentación aquí.

Si sigue experimentando problemas técnicos, puede enviar una solicitud en nuestro Portal de soporte al cliente. No olvide incluir el identificador de trabajo en la solicitud de soporte técnico.

Campos JSON

Http (método) Endpoint Description
GET https://api.appnexus.com/batch-segment/meta Use esta llamada para averiguar por qué campos puede filtrar y ordenar.
Fields Tipo Description
id Entero Este es el identificador del batch_segment_upload_job objeto asociado a esta solicitud.

Valor predeterminado: número generado automáticamente.
status string Estado de la llamada API; Las llamadas correctas devuelven "OK".
batch_segment_upload_job object Se trata de un objeto cuyos campos contienen metadatos que describen el trabajo de carga y procesamiento. Si usa la API impbus, se trata de una matriz que contiene un solo objeto. Consulte Trabajo de carga de segmentos por lotes para obtener más información.

Trabajo de carga de segmentos por lotes

Cuando se solicita el estado del trabajo de procesamiento, el sistema devuelve un batch_segment_upload_job objeto (si es un proveedor de datos, se trata de una matriz que contiene un solo objeto). En función de la solicitud que realice al servicio, contendrá algunos o todos los metadatos siguientes.

Nota:

La mayoría de los metadatos solo estarán presentes cuando "phase": "completed".

Fields Tipo Descripción
upload_url string Dirección URL donde cargará el archivo de datos del segmento.
phase enumeración Estado de procesamiento actual.

Devuelve uno de los valores siguientes:
- error
- starting
- uploading
- validating
- processing
- completed
start_time date Hora a la que comenzó la carga de archivos.
uploaded_time date Hora a la que se cargó el archivo asociado a este identificador de trabajo.
validated_time date Hora a la que se completó la validación de archivos.
completed_time date Hora a la que se completó el procesamiento de archivos.
error_code Entero Si "phase": "error"es , este código de error describe el tipo de error encontrado. Tenga en cuenta que un código de error solo se mostrará aquí si se produjo un error con la carga, validación o procesamiento del propio archivo (es decir, no incluye el formato no válido o errores de segmento no válidos). Los errores comunes se deben a archivos ilegibles y superan los límites de objetos definidos.

Devuelve null si no se encontró ningún error.
time_to_process decimal El tiempo que tardó en procesar el archivo de segmento, en minutos.
percent_complete Entero Porcentaje del procesamiento que se ha completado, dada la fase actual en el momento de la solicitud.
num_valid Entero Número de líneas válidas en el archivo cargado. Cada combinación de usuario/segmento se considera 1 línea.
num_invalid_format Entero Número de líneas cargadas que contienen errores de formato. Esto depende de la configuración de formato de archivo determinada. Las líneas duplicadas también se considerarán un formato no válido.
num_valid_user Entero Recuento de líneas de entrada únicas que tienen un identificador de usuario válido.
num_invalid_user Entero Recuento de líneas de entrada únicas que tienen un usuario no válido o inexistente.
num_invalid_segment Entero Número de segmentos no válidos en el archivo. Desduplicado.
num_invalid_timestamp Entero Número de marcas de tiempo no válidas en el archivo.
num_unauth_segment Entero Número de segmentos en el archivo al que no está autorizado el acceso. Desduplicado.
num_past_expiration Entero Número de segmentos expirados en el archivo. Desduplicado.
num_inactive_segment Entero Número de segmentos inactivos en el archivo. Desduplicado.
num_other_error Entero Se trata de un valor de marcador de posición que no está actualmente en uso.
error_log_lines string Cadena que contiene líneas separadas por líneas nuevas. Cada línea muestra un error de validación o el motivo de un error al cargar el archivo.

Puede elegir cuántas líneas aparecen en este campo.

Valor predeterminado: 200 lines
segment_log_lines string Cadena que contiene líneas separadas por líneas nuevas que constan del identificador de segmento y el número de usuarios agregados o quitados correctamente. Este campo tiene 200 linescomo valor predeterminado .
Se agrega el formato: SEG_ID:COUNT SEG_ID:COUNT ... removed: SEG_ID:COUNT ... donde SEG_ID es el identificador de segmento y COUNT es el número de usuarios agregados o quitados correctamente. SEG_ID:COUNT los pares se ordenan por COUNT (descendente).

Ejemplo:
added:15889133:38622115547290:186227removed:15889278:36973415889206:25530715889179:232831
id Entero Identificador único de este objeto.
job_id string Cadena de caracteres alfanuméricos que identifica de forma única el trabajo de procesamiento asociado a este archivo.
member_id Entero Su id. de miembro.

Obligatorio activado: PUT, POST
created_on date Fecha de creación de este objeto.
last_modified date La fecha de modificación más reciente de este objeto (normalmente a través de POST).