Exportar dados de tabelas para o Cloud Storage
Nesta página, você verá como exportar ou extrair dados de tabelas do BigQuery para o Cloud Storage.
Depois de carregar os dados no BigQuery, eles podem ser exportados em diferentes formatos. O BigQuery pode exportar até 1 GB de dados para um único arquivo. Se você estiver exportando mais de 1 GB de dados, será preciso exportá-los para vários arquivos. Ao fazer isso, o tamanho dos arquivos será variado.
É possível usar um serviço como o Dataflow para ler dados no BigQuery, em vez de exportá-los manualmente. Para mais informações sobre como usar o Dataflow para ler e gravar no BigQuery, consulte E/S do BigQuery (em inglês) na documentação do Apache Beam.
Também é possível exportar os resultados de uma consulta usando a
instrução
EXPORT DATA
. Use EXPORT DATA OPTIONS
para exportar visualizações para o Cloud Storage.
Limitações de exportação
Ao exportar dados do BigQuery, observe os itens a seguir:
- Não é possível exportar dados de tabela para um arquivo local, o Planilhas Google ou o Google Drive. O único local de exportação aceito é o Cloud Storage. Para mais informações sobre como salvar resultados de consulta, acesse Como fazer o download de resultados de consulta e salvá-los.
- É possível exportar até 1 GB de dados da tabela para um único arquivo. Se você estiver exportando mais de 1 GB de dados, use um caractere curinga para exportar os dados para vários arquivos. Ao exportar dados para vários arquivos, o tamanho dos arquivos varia. Para limitar o tamanho do arquivo exportado, é possível particionar seus dados e exportar cada partição.
- O tamanho do arquivo gerado ao usar a instrução
EXPORT DATA
não é garantido. - O número de arquivos gerados por um job de exportação pode variar.
- Não é possível exportar dados aninhados e repetidos no formato CSV. Os dados aninhados e repetidos são compatíveis com as exportações para Avro, JSON e Parquet.
- Quando você exporta dados no formato JSON, os tipos de dados INT64 (números inteiros) são codificados como strings JSON para preservar a precisão de 64 bits quando os dados são lidos por outros sistemas.
- Não é possível exportar dados de várias tabelas em um único job de exportação.
- Só é possível escolher o tipo de compactação
GZIP
ao exportar dados usando o console do Google Cloud. - Ao exportar dados para um bucket do Cloud Storage configurado com uma política de retenção, o BigQuery pode não gravar os arquivos no bucket. Configure o período de armazenamento para que seja mais longo que a duração dos jobs de exportação.
- Quando você exporta uma tabela no formato JSON, os símbolos
<
,>
e&
são convertidos usando a notação unicode\uNNNN
, em queN
é um dígito hexadecimal. Por exemplo,profit&loss
torna-seprofit\u0026loss
. Essa conversão para unicode é feita para evitar vulnerabilidades de segurança. - A ordem dos dados da tabela exportada não é garantida, a menos que você use a instrução
EXPORT DATA
e especifique uma cláusulaORDER BY
noquery_statement
. - O BigQuery não é compatível com caminhos de recursos do Cloud Storage que contêm várias barras consecutivas após a barra dupla inicial.
Os nomes de objeto do Cloud Storage podem conter vários caracteres de barra
("/") consecutivos. No entanto, o BigQuery os
converte em uma única barra. Por exemplo, o caminho de recurso a seguir, ainda que
válido no Cloud Storage, não funciona no BigQuery:
gs://bucket/my//object//name
. - Os dados novos carregados no BigQuery enquanto um job de exportação estiver em execução não serão incluídos nesse job. Você precisa criar um novo job de exportação para exportar os novos dados.
Antes de começar
Atribua papéis do Identity and Access Management (IAM) que concedam aos usuários as permissões necessárias para realizar cada tarefa deste documento.
Permissões necessárias
Para executar as tarefas neste documento, você precisa das seguintes permissões.
Permissões para exportar dados de uma tabela do BigQuery
Para exportar dados de uma tabela do BigQuery, você precisa da
permissão do IAM bigquery.tables.export
.
Cada um dos seguintes papéis predefinidos do IAM inclui a
permissão bigquery.tables.export
:
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Permissões para executar um job de exportação
Para executar um job de exportação, é preciso ter a permissão bigquery.jobs.create
do IAM.
Cada um dos papéis predefinidos do IAM a seguir inclui as permissões necessárias para executar um job de exportação:
roles/bigquery.user
roles/bigquery.jobUser
roles/bigquery.admin
Permissões para gravar os dados no bucket do Cloud Storage
Para gravar os dados em um bucket atual do Cloud Storage, você precisa das seguintes permissões do IAM:
storage.objects.create
storage.objects.delete
Cada um dos papéis predefinidos do IAM a seguir inclui as permissões necessárias para gravar os dados em um bucket atual do Cloud Storage:
roles/storage.objectAdmin
roles/storage.admin
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Considerações sobre o local
Colocar os buckets do Cloud Storage para exportar dados:- Se o conjunto de dados do BigQuery estiver na multirregião
EU
, o bucket do Cloud Storage que contém os dados exportados precisará estar na mesma multirregião ou em um local contido na multirregião. Por exemplo, se o conjunto de dados do BigQuery estiver na multirregiãoEU
, o bucket do Cloud Storage poderá estar localizado na região Bélgicaeurope-west1
, que está na UE.Se seu conjunto de dados estiver na multirregião
US
, será possível exportar dados para um bucket do Cloud Storage em qualquer local. - Se o conjunto de dados estiver em uma região, o bucket do Cloud Storage precisará estar na mesma região. Por
exemplo, se o conjunto de dados estiver na região
asia-northeast1
de Tóquio, o bucket do Cloud Storage não poderá estar na multirregiãoASIA
.
- Se você escolher um recurso de armazenamento regional, como um conjunto de dados do BigQuery ou um bucket do Cloud Storage, será necessário desenvolver um plano para gerenciar geograficamente seus dados.
Para mais informações sobre locais do Cloud Storage, consulte Locais de buckets na respectiva documentação.
Mover dados do BigQuery entre locais
Não é possível alterar o local de um conjunto de dados após a criação, mas tem como fazer uma cópia dele. Não é possível mover um conjunto de dados de um local para outro, mas é possível mover (recriar) manualmente um conjunto de dados.
Formatos de exportação e tipos de compactação
O BigQuery é compatível com os seguintes formatos de dados e tipos de compactação para dados exportados.
Formato de dados | Tipos de compactação compatíveis | Detalhes |
---|---|---|
CSV | GZIP | É possível controlar o delimitador CSV nos dados exportados usando
a sinalização Dados aninhados e repetidos não são compatíveis. |
JSON | GZIP | Dados aninhados e repetidos são compatíveis. |
Avro | DEFLATE, SNAPPY | GZIP não é aceito para exportações do Avro. Dados aninhados e repetidos são compatíveis. Consulte os detalhes da exportação do Avro. |
Parquet | SNAPPY, GZIP, ZSTD | Dados aninhados e repetidos são compatíveis. Consulte os Detalhes da exportação do Parquet. |
Exportar dados
Para exportar dados de tabela:
- Use o console do Google Cloud
- use o comando
bq extract
na ferramenta de linha de comando bq; - envie um job
extract
com a API ou as bibliotecas cliente.
exportar dados da tabela
Para exportar dados de uma tabela do BigQuery, siga estas etapas:
Console
Abra a página do BigQuery no console do Google Cloud.
No painel Explorer, expanda o projeto e o conjunto de dados e selecione a tabela.
No painel de detalhes, clique em Exportar e selecione Exportar para o Cloud Storage.
Na caixa de diálogo Exportar tabela para o Google Cloud Storage, siga estas instruções:
- Em Selecionar local do Google Cloud Storage, procure o bucket, a pasta ou o arquivo para o qual quer exportar os dados.
- Em Formato de exportação, escolha o formato dos dados exportados: CSV, JSON (delimitado por nova linha), Avro ou Parquet.
- Para Compactação, selecione um formato de compactação ou
None
para não fazer compactação. - Clique em Exportar para exportar a tabela.
Para verificar o andamento do job, procure um job de exportação no Histórico de jobs, na parte superior da navegação.
Para exportar visualizações para o Cloud Storage, use a instrução EXPORT DATA OPTIONS
.
SQL
Use a
instrução EXPORT DATA
.
No exemplo a seguir, exportamos
os campos selecionados de uma tabela chamada mydataset.table1
.
No Console do Google Cloud, acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
EXPORT DATA OPTIONS ( uri = 'gs://bucket/folder/*.csv', format = 'CSV', overwrite = true, header = true, field_delimiter = ';') AS ( SELECT field1, field2 FROM mydataset.table1 ORDER BY field1 );
Clique em
Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
bq
Use o comando bq extract
com a sinalização --destination_format
.
Opcional: forneça a sinalização --location
e defina o valor do
local.
Estas são outras sinalizações opcionais:
--compression
: o tipo de compactação a ser usado para arquivos exportados.--field_delimiter
: o caractere que indica o limite entre as colunas no arquivo de saída para exportações de CSV.\t
etab
são permitidos como delimitadores de tabulação.--print_header
: quando especificado, esse objeto imprime linhas de cabeçalho para formatos que têm cabeçalhos, como CSV.
bq extract --location=location \ --destination_format format \ --compression compression_type \ --field_delimiter delimiter \ --print_header=boolean \ project_id:dataset.table \ gs://bucket/filename.ext
Em que:
- location é o nome do local. A sinalização
--location
é opcional. Por exemplo, se estiver usando o BigQuery na região de Tóquio, defina o valor da sinalização comoasia-northeast1
. É possível definir um valor padrão para o local usando o arquivo .bigqueryrc. - format é o formato dos dados exportados:
CSV
,NEWLINE_DELIMITED_JSON
,AVRO
ouPARQUET
. - compression_type é um tipo de compactação compatível com o formato dos dados. Consulte Exportar formatos e tipos de compactação.
- delimiter é o caractere que indica o limite entre as colunas nas exportações de CSV.
\t
etab
são nomes aceitos para a tabulação. - boolean é
true
oufalse
. Quando definido comotrue
, as linhas de cabeçalho serão impressas nos dados exportados se o formato de dados for compatível com cabeçalhos. O valor padrão étrue
. - project_id é o ID do projeto;
- dataset é o nome do conjunto de dados de origem;
- table é a tabela que você está exportando; Se você usar um decorador de partição, precisará colocar o caminho da tabela entre aspas simples ou usar o caractere
$
. - bucket é o nome do bucket do Cloud Storage para o qual você está exportando os dados. O conjunto de dados do BigQuery e o bucket do Cloud Storage precisam estar no mesmo local.
- filename.ext é o nome e a extensão do arquivo de dados exportado. Exporte para vários arquivos com um caractere curinga.
Exemplos:
Por exemplo, o comando a seguir exporta mydataset.mytable
para um arquivo gzip compactado chamado myfile.csv
. myfile.csv
é armazenado em um bucket do Cloud Storage chamado example-bucket
.
bq extract \ --compression GZIP \ 'mydataset.mytable' \ gs://example-bucket/myfile.csv
O formato de destino padrão é CSV. Para exportar para JSON ou Avro, use a sinalização destination_format
, que precisa ser definida como NEWLINE_DELIMITED_JSON
ou AVRO
. Por exemplo:
bq extract \ --destination_format NEWLINE_DELIMITED_JSON \ 'mydataset.mytable' \ gs://example-bucket/myfile.json
O comando a seguir exporta mydataset.mytable
em um arquivo Avro, que é compactado usando o Snappy. O nome do arquivo é myfile.avro
. myfile.avro
é exportado para um bucket do Cloud Storage chamado example-bucket
.
bq extract \ --destination_format AVRO \ --compression SNAPPY \ 'mydataset.mytable' \ gs://example-bucket/myfile.avro
O comando a seguir exporta uma única partição de mydataset.my_partitioned_table
para um arquivo CSV no Cloud Storage:
bq extract \ --destination_format CSV \ 'mydataset.my_partitioned_table$0' \ gs://example-bucket/single_partition.csv
API
Para exportar dados, crie um job extract
e preencha a configuração do job.
(Opcional) Especifique seu local na propriedade location
, na seção jobReference
do recurso do job.
Crie um job de extração que aponte para os dados de origem do BigQuery e para o destino do Cloud Storage.
Especifique a tabela de origem usando o objeto de configuração
sourceTable
, que contém o ID do projeto, o ID do conjunto de dados e o ID da tabela.A propriedade
destination URI(s)
precisa ser totalmente qualificada no formatogs://bucket/filename.ext
. Cada URI contém um caractere curinga "*" após o nome do bucket.Defina a propriedade
configuration.extract.destinationFormat
para especificar o formato dos dados. Por exemplo, para exportar um arquivo JSON, defina essa propriedade com o valorNEWLINE_DELIMITED_JSON
.Para verificar o status do job, chame jobs.get(job_id) com o ID do job retornado pela solicitação inicial.
status.state = DONE
indica que o job foi concluído.- Se a propriedade
status.errorResult
aparecer, isso indica que houve falha na solicitação, e o objeto incluirá informações que descrevem o erro. - Se
status.errorResult
não aparecer, o job foi concluído com sucesso, mesmo se houver erros não fatais. Os erros não fatais são listados na propriedadestatus.errors
do objeto do job retornado.
Observações sobre a API:
Como prática recomendada, gere um ID exclusivo e transmita-o como
jobReference.jobId
, ao chamarjobs.insert
para criar um job. Essa abordagem é mais resistente a falhas de rede porque o cliente pode pesquisar ou tentar novamente com o ID do job conhecido.Chamar
jobs.insert
em um determinado ID de job é idempotente, ou seja, é possível repetir o processo quantas vezes quiser com o mesmo ID e, no máximo, uma das operações será bem-sucedida.
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em C#.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Go.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Node.js.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em PHP.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Ruby.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Detalhes da exportação em Avro
No BigQuery, os dados formatados em Avro são expressos das seguintes maneiras:
- Os arquivos de exportação resultantes são de contêiner Avro.
- Cada linha do BigQuery é representada como um registro Avro. Os dados aninhados são representados por objetos de registro aninhados.
- Os campos
REQUIRED
são representados como tipos Avro correspondentes. Por exemplo, um tipoINTEGER
do BigQuery é mapeado para um tipo AvroLONG
. - Os campos
NULLABLE
são representados como uma união Avro do tipo correspondente e "nulo". - Os campos
REPEATED
são representados como matrizes Avro. - Os tipos de dados
TIMESTAMP
são representados como tipo lógicotimestamp-micros
(anota um tipo AvroLONG
) por padrão em Jobs de extração e em SQL de exportação de dados. Cuidado: é possível adicionaruse_avro_logical_types=False
aExport Data Options
para desativar o tipo lógico para usar o tipostring
na coluna de carimbo de data/hora. No entanto, em "Extract Jobs", ele sempre usa o tipo Avro lógico. - Os tipos de dados
DATE
são representados como tipo lógicodate
(anota os tipos AvroINT
) por padrão no SQL de exportação de dados, mas são representados como tipostring
por padrão em jobs de extração. Observação: é possível adicionaruse_avro_logical_types=False
aExport Data Options
para desativar o tipo lógico ou usar a sinalização--use_avro_logical_types=True
para ativar o tipo lógico em Jobs de extração. - Por padrão, os tipos de dados
TIME
são representados como tipo lógicotimestamp-micro
(ele anota um tipoLONG
da Avro) no SQL de dados de exportação, mas são representados como tipostring
por padrão em jobs de extração. Observação: é possível adicionaruse_avro_logical_types=False
aExport Data Options
para desativar o tipo lógico ou usar a sinalização--use_avro_logical_types=True
para ativar o tipo lógico em Jobs de extração. - Os tipos de dados
DATETIME
são representados como tipos AvroSTRING
(um tipo de string com tipo lógico nomeado personalizadodatetime
) por padrão no Export Data SQL, mas são representados comostring
digite por padrão nos jobs de extração. Observação: é possível adicionaruse_avro_logical_types=False
aExport Data Options
para desativar o tipo lógico ou usar a sinalização--use_avro_logical_types=True
para ativar o tipo lógico em Jobs de extração.
Os tipos de dados NUMERIC(P[, S])
e BIGNUMERIC(P[, S])
parametrizados transferem os parâmetros de precisão e tipo de escala para o tipo lógico decimal Avro.
O formato Avro não pode ser usado com a compactação GZIP. Para compactar
dados Avro, use a ferramenta de linha de comando bq ou a API e especifique um dos
tipos de compactação compatíveis com os dados Avro: DEFLATE
ou SNAPPY
.
Detalhes da exportação Parquet
O BigQuery converte tipos de dados do GoogleSQL nos seguintes tipos de dados Parquet:
Tipo de dados do BigQuery | Tipo primitivo Parquet | Tipo lógico Parquet |
---|---|---|
Número inteiro | INT64 |
NONE |
Numérico | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = 38, scale = 9) |
Numeric(P[, S]) | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = P, scale = S) |
BigNumeric | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = 76, scale = 38) |
BigNumeric(P[, S]) | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = P, scale = S) |
Ponto flutuante | FLOAT |
NONE |
Booleano | BOOLEAN |
NONE |
String | BYTE_ARRAY |
STRING (UTF8) |
Bytes | BYTE_ARRAY |
NONE |
Data | INT32 |
DATE |
Datetime | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
Hora | INT64 |
TIME (isAdjustedToUTC = true, unit = MICROS) |
Carimbo de data/hora | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
O esquema Parquet representa os dados aninhados como um grupo e registros repetidos como grupos repetidos. Para mais informações sobre como usar dados aninhados e repetidos no BigQuery, consulte Como especificar colunas aninhadas e repetidas.
É possível usar as seguintes soluções alternativas para tipos DATETIME
:
- Carregue o arquivo em uma tabela de preparação. Em seguida, use uma consulta SQL para converter o campo em
um
DATETIME
. Depois disso, salve o resultado em uma nova tabela. Para mais informações, consulte Como alterar o tipo de dados de uma coluna. - Forneça um esquema para a tabela usando a sinalização
--schema
no job de carregamento. Defina a coluna de data e hora comocol:DATETIME
.
Exportar dados para um ou mais arquivos
A propriedade destinationUris
indica um ou mais locais e nomes de arquivos em que
o BigQuery deve exportar seus arquivos.
O BigQuery aceita um único operador de caractere curinga (*) para cada URI. Esse caractere pode ser usado em qualquer posição do URI, exceto como parte do nome do bucket. O uso do operador de caractere curinga faz com que o BigQuery crie vários arquivos fragmentados com base no padrão fornecido. Ele é substituído
por um número de 12 dígitos preenchido à esquerda, começando por 0. Por exemplo, um URI com
um caractere curinga no fim do nome do arquivo gera arquivos com 000000000000
anexado ao primeiro arquivo, 000000000001
anexado ao segundo e assim por
diante.
A tabela abaixo descreve várias opções possíveis para a propriedade destinationUris
:
Opções de destinationUris |
|
---|---|
URI único |
Use um único URI se você estiver exportando dados de tabela com 1 GB ou
menos. Essa opção é o caso de uso mais comum, porque os dados exportados geralmente
são menores que o valor máximo de 1 GB. Essa opção não é compatível com a
instrução Definição da propriedade:
Gera: gs://my-bucket/file-name.json |
URI com um único caractere curinga |
Use um URI com um único caractere coringa para exportar dados maiores do que o valor máximo de 1 GB. Os dados são fragmentados pelo BigQuery entre vários arquivos com base no padrão fornecido. O tamanho dos arquivos exportados varia. Se você usar um curinga em um componente do URI diferente do nome do arquivo, verifique se o componente do caminho não existe antes de exportar os dados. Definição da propriedade:
Gera: gs://my-bucket/file-name-000000000000.json gs://my-bucket/file-name-000000000001.json gs://my-bucket/file-name-000000000002.json ... |
Limitar o tamanho do arquivo exportado
Ao exportar mais de 1 GB de dados em uma única exportação, é preciso usar um caractere curinga para exportar os dados para vários arquivos e o tamanho dos arquivos terá variações. Se você precisar limitar o tamanho máximo de cada arquivo exportado, uma opção será particionar aleatoriamente os dados e, em seguida, exportar cada partição para um arquivo:
- Determine o número de partições necessárias, que é igual ao tamanho total dos dados dividido pelo tamanho de arquivo exportado desejado. Por exemplo, se você tiver 8.000 MB de dados e quiser que cada arquivo exportado tenha aproximadamente 20 MB, precisará de 400 partições.
Crie uma nova tabela particionada e em cluster por uma nova coluna gerada aleatoriamente chamada
export_id
. O exemplo a seguir mostra como criar um novoprocessed_table
usando uma tabela existente chamadasource_table
, que exige partiçõesn
para atingir o tamanho de arquivo desejado:CREATE TABLE my_dataset.processed_table PARTITION BY RANGE_BUCKET(export_id, GENERATE_ARRAY(0, n, 1)) CLUSTER BY export_id AS ( SELECT *, CAST(FLOOR(n*RAND()) AS INT64) AS export_id FROM my_dataset.source_table );
Para cada número inteiro
i
entre 0 en-1
, execute uma instruçãoEXPORT DATA
na seguinte consulta:SELECT * EXCEPT(export_id) FROM my_dataset.processed_table WHERE export_id = i;
Extrair tabela compactada
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Go.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Node.js.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Exemplo de caso de uso:
Este exemplo mostra como exportar dados para o Cloud Storage.
Suponha que você esteja fazendo streaming contínuo de dados para o Cloud Storage a partir de registros do endpoint. Um snapshot diário precisa ser exportado para o Cloud Storage para fins de backup e arquivamento. A melhor opção é um job de extração sujeito a determinadas cotas e limitações.
Envie um job de extração com a
API
ou as
bibliotecas de cliente,
transmitindo um ID exclusivo como jobReference.jobId
. Os jobs de extração são
assíncronos.
Verifique o status do job
com o ID exclusivo usado na criação dele. O job foi concluído com sucesso
se status.status
for DONE
. Se aparecer status.errorResult
,
o job falhou e precisará ser repetido.
Processamento de dados em lote
Suponha que um job em lote noturno seja usado para carregar dados até um prazo determinado. Depois que esse job de carregamento for concluído, uma tabela com estatísticas será materializada em uma consulta, conforme descrito na seção anterior. Os dados dessa tabela são recuperados e compilados em um relatório PDF e enviados a um regulador.
Como a quantidade de dados que precisa ser lida é pequena, use a
API tabledata.list
para recuperar todas as linhas da tabela no formato de dicionário JSON. Se houver
mais de uma página de dados, os resultados terão a propriedade pageToken
definida. Para recuperar a página seguinte de resultados, faça outra chamada tabledata.list
e
inclua o valor do token como o parâmetro pageToken
. Se a chamada de API falhar
com um erro
5xx,
tente novamente com espera exponencial. A maioria dos erros 4xx não pode ser repetida. Para
uma melhor separação entre as exportações do BigQuery e a geração de relatórios,
os resultados devem ser mantidos no disco.
Política de cotas
Para mais informações sobre cotas de jobs de exportação, consulte Exportar jobs na página "Cotas e limites".
O uso de jobs de exportação está disponível no INFORMATION_SCHEMA
.
A entrada do job nas tabelas do sistema JOBS_BY_*
do job de exportação contém um
valor de total_processed_bytes
que pode ser usado para monitorar o uso agregado e
garantir que permaneça abaixo de 50 TB por dia. Para saber como consultar a
visualização INFORMATION_SCHEMA.JOBS
para conseguir o valor total_processed_bytes
, consulte
Receber bytes processados por jobs de exportação.
Conferir o uso atual da cota
É possível conferir seu uso atual de jobs de consulta, carregamento, extração ou cópia executando
uma consulta INFORMATION_SCHEMA
para visualizar metadados sobre os jobs executados em um
período especificado. É possível comparar seu uso atual com o limite de cota para determinar o uso de cota para um tipo específico de job. O exemplo de consulta a seguir usa a visualização INFORMATION_SCHEMA.JOBS
para listar o número de jobs de consulta, carregamento, extração e cópia por projeto:
SELECT sum(case when job_type="QUERY" then 1 else 0 end) as QRY_CNT, sum(case when job_type="LOAD" then 1 else 0 end) as LOAD_CNT, sum(case when job_type="EXTRACT" then 1 else 0 end) as EXT_CNT, sum(case when job_type="COPY" then 1 else 0 end) as CPY_CNT FROM `region-eu`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE date(creation_time)= CURRENT_DATE()
É possível configurar uma política de alertas do Cloud Monitoring que fornece notificações do número de bytes exportados.
No Console do Google Cloud, acesse a página Monitoring.
No painel de navegação, selecione Metrics explorer.
No editor de consultas do MQL, configure um alerta para monitorar os bytes exportados por dia, conforme mostrado no exemplo a seguir:
fetch consumer_quota | filter resource.service == 'bigquery.googleapis.com' | { metric serviceruntime.googleapis.com/quota/rate/net_usage | align delta_gauge(1m) | group_by [resource.project_id, metric.quota_metric, resource.location], sum(value.net_usage) ; metric serviceruntime.googleapis.com/quota/limit | filter metric.limit_name == 'ExtractBytesPerDay' | group_by [resource.project_id, metric.quota_metric, resource.location], sliding(1m), max(val()) } | ratio | every 1m | condition gt(val(), 0.01 '1')
Para configurar o alerta, clique em Executar consulta.
Para mais informações, consulte Políticas de alertas com a MQL.
Solução de problemas
Para diagnosticar problemas com jobs de extração, use a Análise de registros. para revisar os registros de um job de extração específico e identificar possíveis erros. O filtro da Análise de registros a seguir retorna informações sobre jobs de extração:
resource.type="bigquery_resource"
protoPayload.methodName="jobservice.insert"
(protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.query.query=~"EXPORT" OR
protoPayload.serviceData.jobCompletedEvent.eventName="extract_job_completed" OR
protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.query=~"EXPORT")
Preços
Para saber mais sobre os preços de exportação de dados, consulte a página de preços do BigQuery.
Depois que os dados forem exportados, você será cobrado pelo armazenamento deles no Cloud Storage. Para mais informações, consulte Preços do Cloud Storage.
Segurança de tabelas
Para controlar o acesso a tabelas no BigQuery, consulte Introdução aos controles de acesso a tabelas.
A seguir
- Para saber mais, consulte Como usar o console do Google Cloud.
- Para saber mais sobre a ferramenta de linha de comando bq, consulte Como usar a ferramenta de linha de comando bq.
- Para aprender a criar um aplicativo usando as bibliotecas de cliente da API BigQuery, consulte o Guia de início rápido da biblioteca de cliente.