Qué se exporta
Se incluyen las tareas enviadas con cualquier clave de la cuenta, desde el Playground y por los monitores. Una
ventana contiene exactamente las filas cuyo tiempo cae en
[windowStart, windowEnd).
Momento de la entrega. Una ventana vence 10 minutos después de cerrarse, para que incluya los cobros
liquidados en el límite. Un proceso que se ejecuta cada 15 minutos recoge las ventanas vencidas, así que la
entrega suele empezar entre 10 y 25 minutos después de que se cierre la ventana.
Configurar una exportación
1
Consulta tu identidad de exportación
accountKey da nombre a tu carpeta y a tus tablas. Todas las rutas y tablas que escribimos
lo llevan, así que varias cuentas de querying.ai pueden compartir un bucket o dataset y cada una
escribe solo sus propios archivos. Concede permiso a la identidad que muestra tu respuesta, no al ejemplo de arriba.2
Concede acceso
Concede a la identidad acceso a tu destino. Consulta
Conceder acceso para S3, Cloud Storage y BigQuery.
3
Crea la exportación
POST /v1/exports comprueba el permiso y guarda la exportación. Consulta
Crear la exportación.4
Sigue la primera entrega
GET /v1/exports/{id}/runs lista cada ventana y su estado. Consulta
Historial de entregas.Conceder acceso
Amazon S3
Crea en tu cuenta de AWS un rol de IAM que nuestra identidad de Google pueda asumir. Usa eltrustPolicy de la respuesta de identidad como política de confianza del rol. Acepta solo nuestra
identidad de exportación y solo con el nombre de sesión de tu cuenta:
kms:GenerateDataKey sobre
esa clave.
Google Cloud Storage
Concede a la cuenta de servicio de exportación Storage Object User (roles/storage.objectUser) en
el bucket. Crea los archivos y los reemplaza cuando una ventana se vuelve a enviar.
resource.name.startsWith("projects/_/buckets/acme-geo/objects/querying/acct_3f9a1c2b7d4e/").
BigQuery
Concede a la cuenta de servicio de exportación BigQuery Data Editor (roles/bigquery.dataEditor) en
el dataset. Ejecutamos los trabajos de carga en nuestro propio proyecto, así que cargar no te cuesta nada;
solo pagas el almacenamiento y las consultas que ejecutes.
Crear la exportación
Usa una clave de API sin restricción de motores: una exportación lleva todos los resultados de la cuenta, así que una clave limitada a algunos motores recibe403 KEY_SCOPE.
Antes de guardarla, la exportación comprueba el permiso. En S3 y Cloud Storage escribe
<prefix><accountKey>/_querying/connection-check.json; en BigQuery lee el dataset
y registra su ubicación. Si la comprobación falla, no se guarda nada. Una cuenta puede tener hasta 10
exportaciones.
La respuesta es 201 con la exportación:
destination repite la configuración del bucket y añade path, la
carpeta donde llegan tus archivos, como s3://acme-geo/querying/acct_3f9a1c2b7d4e/ o
gs://acme-geo/querying/acct_3f9a1c2b7d4e/. nextWindowStart es el inicio de la siguiente
ventana que se planificará.
Errores
Archivos y tablas
Archivos en S3 y Cloud Storage
- Los directorios siguen la partición de Hive (
dt=, yhour=en exportaciones por hora), así que Athena, las tablas externas de BigQuery y Spark los leen como columnas. v1es la versión del esquema (schemaVersionen la exportación). Un cambio que rompa una columna se publica comov2a su lado.- Una ventana se divide en partes de hasta 100.000 filas, en orden temporal.
_manifest.jsonse escribe al final. Carga una ventana cuando exista su manifiesto y toma de él la lista de partes:
rows del manifiesto coincide con el número de líneas de sus partes y con el rows de la ejecución en
el historial de entregas. Los nombres de archivo dependen solo de la ventana, así que una ventana reenviada
reemplaza los mismos objetos.
Tablas de BigQuery
Las exportaciones a BigQuery cargan enquerying_tasks_v1_<accountKey> y
querying_monitor_results_v1_<accountKey>, creadas en la primera carga y particionadas por
completedAt o ranAt (por día, o por hora en exportaciones por hora). Cada ventana reemplaza su
propia partición, así que una ventana reenviada nunca se duplica. payload, response, sources y
scoringContext son columnas JSON:
Esquema de filas (v1)
tasks
monitor_results
Historial de entregas
Cada ventana de cada conjunto de datos es una ejecución. Lístalas de la más reciente a la más antigua:
Filtra con
status, data (tasks o monitor_results) y limit (1–200, por defecto
50); devuelve nextCursor como cursor para obtener la página siguiente.
- Reintentos automáticos. Un intento fallido se reintenta a los 15 minutos y después con un intervalo
que se duplica hasta 12 horas, ocho intentos en total.
errorcontiene el motivo del proveedor de almacenamiento, así que un permiso que falta aparece aquí primero. - Volver a enviar una ventana.
POST /v1/exports/{id}/runs/{runId}/retryenvía una ventana ahora: una fallida después de corregir el permiso, o una entregada que quieres reescribir. Reiniciaattemptsy devuelve la ejecución comopending. Una ejecución que se está entregando devuelve409 EXPORT_RUN_RUNNING. - Estado de la exportación.
GET /v1/exportsyGET /v1/exports/{id}añadendeliveredThrough(el final de la última ventana entregada),failedRunsyretryingRuns(ejecuciones pendientes que ya fallaron al menos una vez).
Pausar, reanudar y eliminar
PATCH /v1/exports/{id}con{"enabled": false}pausa una exportación.{"enabled": true}la reanuda y recupera las ventanas que se perdió, hasta 30 días atrás.DELETE /v1/exports/{id}detiene la exportación. Los archivos y particiones ya entregados se quedan en tu almacenamiento.- El destino, la frecuencia y los conjuntos de datos no se pueden cambiar. Crea una exportación nueva y elimina la anterior.
Endpoints
Una exportación que no te pertenece devuelve
404 NOT_FOUND.