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:
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"]}}
Ha cancelado la carga.
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 unsegment_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 lines como 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 ). |