Ce qui est exporté
Les tâches envoyées avec n’importe quelle clé du compte, depuis le Playground et par les moniteurs sont toutes
incluses. Une fenêtre contient exactement les lignes dont l’heure tombe dans
[windowStart, windowEnd).
Délai de livraison. Une fenêtre est due 10 minutes après sa fermeture, afin que les facturations réglées à la
limite y figurent. Les fenêtres dues sont prises en charge par un job qui s’exécute toutes les 15 minutes : la
livraison commence donc normalement 10 à 25 minutes après la fermeture de la fenêtre.
Configurer un export
1
Lire votre identité d’export
accountKey nomme votre dossier et vos tables. Chaque chemin et chaque table que nous écrivons le porte :
plusieurs comptes querying.ai peuvent partager un bucket ou un dataset, et chacun n’écrit
que ses propres fichiers. Autorisez l’identité que montre votre réponse, pas l’exemple ci-dessus.2
Accorder l’accès
Accordez l’accès à votre destination à cette identité. Voir
Accorder l’accès pour S3, Cloud Storage et BigQuery.
3
Créer l’export
POST /v1/exports vérifie l’autorisation et enregistre l’export. Voir
Créer l’export.4
Surveiller la première livraison
GET /v1/exports/{id}/runs liste chaque fenêtre et son statut. Voir
Historique de livraison.Accorder l’accès
Amazon S3
Créez dans votre compte AWS un rôle IAM que notre identité Google peut assumer. Utilisez letrustPolicy de la réponse d’identité comme politique d’approbation du rôle. Il n’accepte que notre
identité d’export, et seulement avec le nom de session de votre compte :
kms:GenerateDataKey sur
cette clé.
Google Cloud Storage
Accordez au compte de service d’export le rôle Storage Object User (roles/storage.objectUser) sur
le bucket. Il crée les fichiers et les remplace quand une fenêtre est renvoyée.
resource.name.startsWith("projects/_/buckets/acme-geo/objects/querying/acct_3f9a1c2b7d4e/").
BigQuery
Accordez au compte de service d’export le rôle BigQuery Data Editor (roles/bigquery.dataEditor) sur
le dataset. Nous exécutons les jobs de chargement dans notre propre projet : le chargement ne vous coûte rien, vous
ne payez que le stockage et vos requêtes.
Créer l’export
Utilisez une clé d’API sans restriction de moteurs : un export transporte tous les résultats du compte, donc une clé limitée à certains moteurs reçoit403 KEY_SCOPE.
Avant d’enregistrer, l’export vérifie l’autorisation. Pour S3 et Cloud Storage, il écrit
<prefix><accountKey>/_querying/connection-check.json ; pour BigQuery, il lit le dataset
et enregistre sa localisation. Si la vérification échoue, rien n’est enregistré. Un compte peut avoir jusqu’à 10
exports.
La réponse est 201 avec l’export :
destination reprend les réglages du bucket et ajoute path, le
dossier où arrivent vos fichiers, par exemple s3://acme-geo/querying/acct_3f9a1c2b7d4e/ ou
gs://acme-geo/querying/acct_3f9a1c2b7d4e/. nextWindowStart est le début de la prochaine
fenêtre à planifier.
Erreurs
Fichiers et tables
Fichiers dans S3 et Cloud Storage
- Les répertoires suivent le partitionnement Hive (
dt=, ethour=pour les exports horaires) : Athena, les tables externes BigQuery et Spark les lisent comme des colonnes. v1est la version du schéma (schemaVersionde l’export). Un changement qui casse une colonne est publié env2à côté.- Une fenêtre est découpée en parties de 100 000 lignes au plus, dans l’ordre chronologique.
_manifest.jsonest écrit en dernier. Chargez une fenêtre dès que son manifeste existe et lisez-y la liste des parties :
rows dans le manifeste est égal au nombre de lignes de ses parties et au rows de l’exécution dans
l’historique de livraison. Les noms de fichiers ne dépendent que de la fenêtre : une fenêtre renvoyée remplace
les mêmes objets.
Tables BigQuery
Les exports BigQuery chargent dansquerying_tasks_v1_<accountKey> et
querying_monitor_results_v1_<accountKey>, créées au premier chargement et partitionnées par
completedAt ou ranAt (par jour, ou par heure pour les exports horaires). Chaque fenêtre remplace sa
propre partition : une fenêtre renvoyée n’est jamais dupliquée. payload, response, sources et
scoringContext sont des colonnes JSON :
Schéma des lignes (v1)
tasks
monitor_results
Historique de livraison
Chaque fenêtre de chaque jeu de données est une exécution. Listez-les de la plus récente à la plus ancienne :
Filtrez avec
status, data (tasks ou monitor_results) et limit (1–200, 50 par défaut) ;
renvoyez nextCursor comme cursor pour la page suivante.
- Nouvelles tentatives automatiques. Une tentative échouée est relancée après 15 minutes, puis le délai
double jusqu’à 12 heures, huit tentatives en tout.
errorcontient la raison donnée par le fournisseur de stockage : une autorisation manquante apparaît d’abord ici. - Renvoyer une fenêtre.
POST /v1/exports/{id}/runs/{runId}/retryenvoie une fenêtre immédiatement : une fenêtre échouée après correction de l’accès, ou une fenêtre livrée que vous voulez réécrire. Il remetattemptsà zéro et renvoie l’exécution enpending. Une exécution en cours de livraison renvoie409 EXPORT_RUN_RUNNING. - État de l’export.
GET /v1/exportsetGET /v1/exports/{id}ajoutentdeliveredThrough(la fin de la dernière fenêtre livrée),failedRunsetretryingRuns(exécutions en attente qui ont déjà échoué au moins une fois).
Suspendre, reprendre et supprimer
PATCH /v1/exports/{id}avec{"enabled": false}suspend un export.{"enabled": true}le reprend et rattrape les fenêtres manquées, jusqu’à 30 jours en arrière.DELETE /v1/exports/{id}arrête l’export. Les fichiers et partitions déjà livrés restent dans votre stockage.- La destination, la fréquence et les jeux de données ne peuvent pas changer. Créez un nouvel export et supprimez l’ancien.
Endpoints
Un export qui ne vous appartient pas renvoie
404 NOT_FOUND.