Saltar para o conteúdo principal
A cada hora ou a cada dia UTC, uma exportação grava os resultados da janela como JSON Lines compactado com gzip em um bucket do Amazon S3 ou do Google Cloud Storage, ou os carrega em uma partição de uma tabela do BigQuery. Seu data warehouse os lê como qualquer outra fonte, sem loop de polling. Você concede à nossa identidade de exportação permissão de escrita no bucket ou no dataset; você nunca compartilha chaves nem senhas. Todas as chaves, buckets, IDs de conta e roles desta página são exemplos.

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 o trustPolicy 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:
Anexe uma política de permissões que deixe a role escrever sob o seu prefixo:
Se o bucket criptografa com uma chave KMS gerenciada pelo cliente, permita também 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.
Para limitar a permissão à sua pasta, adicione uma condição do IAM em 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 recebe 403 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:
Para S3 e Cloud Storage, 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=, e hour= em exportações por hora), então Athena, tabelas externas do BigQuery e Spark os leem como colunas.
  • v1 é a versão do esquema (schemaVersion na exportação). Uma mudança que quebre uma coluna sai como v2 ao 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 em querying_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. error traz o motivo do provedor de armazenamento, então uma permissão ausente aparece aqui primeiro.
  • Reenvie uma janela. POST /v1/exports/{id}/runs/{runId}/retry envia uma janela agora: uma com falha depois que você corrige a permissão, ou uma entregue que você quer reescrever. Ele zera attempts e retorna a execução como pending. Uma execução que está sendo entregue retorna 409 EXPORT_RUN_RUNNING.
  • Saúde da exportação. GET /v1/exports e GET /v1/exports/{id} adicionam deliveredThrough (o fim da última janela entregue), failedRuns e retryingRuns (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.