O que é exportado
Entram as tarefas enviadas com qualquer chave da conta, pelo Playground e pelos monitores. Uma janela contém
exatamente as linhas cujo horário cai em
[windowStart, windowEnd).
Prazo de entrega. Uma janela fica pronta 10 minutos depois de fechar, para que as cobranças liquidadas no
limite entrem nela. As janelas prontas são coletadas por um job que roda a cada 15 minutos, então a entrega
normalmente começa de 10 a 25 minutos depois que a janela fecha.
Configure uma exportação
1
Consulte sua identidade de exportação
accountKey dá nome à sua pasta e às suas tabelas. Todo caminho e toda tabela que escrevemos o contém,
então várias contas do querying.ai podem compartilhar um bucket ou dataset e cada uma escreve apenas os
próprios arquivos. Autorize a identidade que a sua resposta mostra, não o exemplo acima.2
Conceda acesso
Conceda à identidade acesso ao seu destino. Veja
Conceda acesso para S3, Cloud Storage e BigQuery.
3
Crie a exportação
POST /v1/exports verifica a permissão e salva a exportação. Veja
Crie a exportação.4
Acompanhe a primeira entrega
GET /v1/exports/{id}/runs lista cada janela e o seu status. Veja
Histórico de entregas.Conceda acesso
Amazon S3
Crie na sua conta AWS uma role do IAM que nossa identidade do Google possa assumir. Use otrustPolicy da
resposta de identidade como política de confiança da role. Ela aceita apenas nossa identidade de exportação, e
apenas com o nome de sessão da sua conta:
kms:GenerateDataKey nessa
chave.
Google Cloud Storage
Conceda à conta de serviço de exportação Storage Object User (roles/storage.objectUser) no bucket. Ela
cria os arquivos e os substitui quando uma janela é reenviada.
resource.name.startsWith("projects/_/buckets/acme-geo/objects/querying/acct_3f9a1c2b7d4e/").
BigQuery
Conceda à conta de serviço de exportação BigQuery Data Editor (roles/bigquery.dataEditor) no dataset.
Executamos os jobs de carga no nosso próprio projeto, então carregar não custa nada para você; você paga apenas
o armazenamento e as consultas que executar.
Crie a exportação
Use uma chave de API sem escopo de mecanismo: uma exportação leva todos os resultados da conta, então uma chave limitada a alguns mecanismos recebe403 KEY_SCOPE.
Antes de salvar, a exportação comprova a permissão. Para S3 e Cloud Storage, ela escreve
<prefix><accountKey>/_querying/connection-check.json; para o BigQuery, lê o dataset e registra a sua
localização. Se a verificação falhar, nada é salvo. Uma conta pode ter até 10 exportações.
A resposta é 201 com a exportação:
destination repete as configurações do bucket e adiciona path, a pasta onde seus
arquivos chegam, como s3://acme-geo/querying/acct_3f9a1c2b7d4e/ ou gs://acme-geo/querying/acct_3f9a1c2b7d4e/.
nextWindowStart é o início da próxima janela a ser planejada.
Erros
Arquivos e tabelas
Arquivos no S3 e no Cloud Storage
- Os diretórios seguem o particionamento do Hive (
dt=, ehour=em exportações por hora), então Athena, tabelas externas do BigQuery e Spark os leem como colunas. v1é a versão do esquema (schemaVersionna exportação). Uma mudança que quebre uma coluna sai comov2ao lado.- Uma janela é dividida em partes de até 100.000 linhas, em ordem de tempo.
_manifest.jsoné escrito por último. Carregue uma janela quando o manifesto existir e leia dele a lista de partes:
rows no manifesto é igual ao número de linhas das partes e ao rows da execução no histórico de entregas. Os
nomes dos arquivos dependem apenas da janela, então uma janela reenviada substitui os mesmos objetos.
Tabelas do BigQuery
Exportações para o BigQuery carregam emquerying_tasks_v1_<accountKey> e
querying_monitor_results_v1_<accountKey>, criadas na primeira carga e particionadas por completedAt ou
ranAt (por dia, ou por hora em exportações por hora). Cada janela substitui a própria partição, então uma
janela reenviada nunca duplica. payload, response, sources e scoringContext são colunas JSON:
Esquema das linhas (v1)
tasks
monitor_results
Histórico de entregas
Cada janela de cada conjunto de dados é uma execução. Liste-as da mais recente para a mais antiga:
Filtre com
status, data (tasks ou monitor_results) e limit (1–200, padrão 50); passe nextCursor
de volta como cursor para a próxima página.
- Novas tentativas automáticas. Uma tentativa com falha é repetida após 15 minutos e depois com o intervalo
dobrando até 12 horas, oito tentativas no total.
errortraz o motivo do provedor de armazenamento, então uma permissão ausente aparece aqui primeiro. - Reenvie uma janela.
POST /v1/exports/{id}/runs/{runId}/retryenvia uma janela agora: uma com falha depois que você corrige a permissão, ou uma entregue que você quer reescrever. Ele zeraattemptse retorna a execução comopending. Uma execução que está sendo entregue retorna409 EXPORT_RUN_RUNNING. - Saúde da exportação.
GET /v1/exportseGET /v1/exports/{id}adicionamdeliveredThrough(o fim da última janela entregue),failedRunseretryingRuns(execuções pendentes que já falharam pelo menos uma vez).
Pausar, retomar e excluir
PATCH /v1/exports/{id}com{"enabled": false}pausa uma exportação.{"enabled": true}a retoma e recupera as janelas perdidas, até 30 dias atrás.DELETE /v1/exports/{id}encerra a exportação. Os arquivos e partições já entregues ficam no seu armazenamento.- Destino, frequência e conjuntos de dados não podem mudar. Crie uma exportação nova e exclua a anterior.
Endpoints
Uma exportação que não é sua retorna
404 NOT_FOUND.