Exporte dados de tabelas para o Cloud Storage
Esta página descreve como exportar ou extrair dados de tabelas do BigQuery para o Cloud Storage.
Depois de carregar os dados para o BigQuery, pode exportá-los em vários formatos. O BigQuery pode exportar até 1 GB de tamanho de dados lógicos para um único ficheiro. Se estiver a exportar mais de 1 GB de dados, tem de exportar os dados para vários ficheiros. Quando exporta os seus dados para vários ficheiros, o tamanho dos ficheiros varia.
Também pode exportar os resultados de uma consulta através da declaração
EXPORT DATA
. Pode usar EXPORT DATA OPTIONS
para especificar o formato dos dados exportados.
Por último, pode usar um serviço como o Dataflow para ler dados do BigQuery em vez de os exportar do BigLake. Para mais informações sobre a utilização do Dataflow para ler e escrever no BigQuery, consulte a documentação de BigQuery I/O.
Limitações de exportação
Quando exporta dados do BigQuery, tenha em atenção o seguinte:
- Não pode exportar dados de tabelas para um ficheiro local, para o Google Sheets nem para o Google Drive. A única localização de exportação suportada é o Cloud Storage. Para ver informações sobre como guardar resultados de consultas, consulte o artigo Transferir e guardar resultados de consultas.
- Pode exportar até 1 GB de tamanho de dados da tabela lógica para um único ficheiro. Se estiver a exportar mais de 1 GB de dados, use um caráter universal para exportar os dados para vários ficheiros. Quando exporta dados para vários ficheiros, o tamanho dos ficheiros varia. Para limitar o tamanho do ficheiro exportado, pode dividir os dados e exportar cada divisão.
- O tamanho do ficheiro gerado quando usa a declaração
EXPORT DATA
não é garantido. - O número de ficheiros gerados por uma tarefa de exportação pode variar.
- Não pode exportar dados aninhados e repetidos no formato CSV. Os dados aninhados e repetidos são suportados para exportações de Avro, JSON e Parquet.
- Quando exporta dados no formato JSON, os tipos de dados INT64 (número inteiro) 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 pode exportar dados de várias tabelas numa única tarefa de exportação.
- Não pode escolher um tipo de compressão diferente de
GZIP
quando exporta dados através da Google Cloud consola. - Quando exporta uma tabela no formato JSON, os símbolos
<
,>
e&
são convertidos através da notação Unicode\uNNNN
, em queN
é um dígito hexadecimal. Por exemplo,profit&loss
torna-seprofit\u0026loss
. Esta conversão Unicode é feita para evitar vulnerabilidades de segurança. - A ordem dos dados da tabela exportados não é garantida, a menos que use a declaração
EXPORT DATA
e especifique uma cláusulaORDER BY
noquery_statement
. - O BigQuery não suporta caminhos de recursos do Cloud Storage que incluam várias barras invertidas consecutivas após a barra invertida dupla inicial.
Os nomes de objetos do Cloud Storage podem conter vários carateres de barra
("/") consecutivos. No entanto, o BigQuery converte várias barras invertidas consecutivas numa única barra invertida. Por exemplo, o seguinte caminho do recurso, embora seja válido no Cloud Storage, não funciona no BigQuery:
gs://bucket/my//object//name
. - Todos os novos dados carregados no BigQuery enquanto uma tarefa de exportação estiver em execução não são incluídos nessa tarefa de exportação. Tem de criar uma nova tarefa de exportação para exportar os novos dados.
Antes de começar
Conceda funções de gestão de identidade e de acesso (IAM) que dão aos utilizadores as autorizações necessárias para realizar cada tarefa neste documento.
Autorizações necessárias
Para realizar as tarefas neste documento, precisa das seguintes autorizações.
Autorizações para exportar dados de uma tabela do BigQuery
Para exportar dados de uma tabela do BigQuery, precisa da autorização do
bigquery.tables.export
IAM.
Cada uma das seguintes funções de IAM predefinidas inclui a autorização bigquery.tables.export
:
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Autorizações para executar uma tarefa de exportação
Para executar uma tarefa de exportação, precisa da autorização de IAM bigquery.jobs.create
.
Cada uma das seguintes funções de IAM predefinidas inclui as autorizações de que precisa para executar uma tarefa de exportação:
roles/bigquery.user
roles/bigquery.jobUser
roles/bigquery.admin
Autorizações para escrever os dados no contentor do Cloud Storage
Para escrever os dados num contentor do Cloud Storage existente, precisa das seguintes autorizações de IAM:
storage.objects.create
storage.objects.delete
Cada uma das seguintes funções de IAM predefinidas inclui as autorizações de que precisa para escrever os dados num contentor do Cloud Storage existente:
roles/storage.objectAdmin
roles/storage.admin
Para mais informações sobre as funções e as autorizações do IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.
Formatos de exportação e tipos de compressão
O BigQuery suporta os seguintes formatos de dados e tipos de compressão para dados exportados.
Formato de dados | Tipos de compressão suportados | Detalhes |
---|---|---|
CSV | GZIP | Pode controlar o delimitador CSV nos dados exportados através da flag da ferramenta de linha de comandos Os dados aninhados e repetidos não são suportados. |
JSON | GZIP | Os dados aninhados e repetidos são suportados. |
Avro | DEFLATE, SNAPPY | O GZIP não é suportado para exportações Avro. Os dados aninhados e repetidos são suportados. Consulte os detalhes da exportação Avro. |
Parquet | SNAPPY, GZIP, ZSTD | Os dados aninhados e repetidos são suportados. Veja os detalhes da exportação Parquet. |
Exportar dados
As secções seguintes mostram como exportar os dados das tabelas, os metadados das tabelas e os resultados das consultas para o Cloud Storage.
Exporte dados de tabelas
Pode exportar dados de tabelas das seguintes formas:
- Usar a Google Cloud consola
- Usar o comando
bq extract
na ferramenta de linhas de comando bq - Enviar uma tarefa
extract
através da API ou das bibliotecas cliente
Selecione uma das seguintes opções:
Consola
Abra a página do BigQuery na Google Cloud consola.
No painel Explorador, expanda o projeto e o conjunto de dados e, de seguida, selecione a tabela.
No painel de detalhes, clique em Exportar e selecione Exportar para o Cloud Storage.
Na caixa de diálogo Exportar para o Google Cloud Storage:
- Para Localização do GCS, procure o contentor, a pasta ou o ficheiro onde quer exportar os dados.
- Para Formato de exportação, escolha o formato dos dados exportados: CSV, JSON (delimitado por nova linha), Avro ou Parquet.
- Em Compressão, selecione um formato de compressão ou selecione
None
para não comprimir.
Clique em Guardar para exportar a tabela.
Para verificar o progresso da tarefa, expanda o painel Histórico de tarefas e
procure a tarefa do tipo EXTRACT
.
Para exportar vistas para o Cloud Storage, use a declaração EXPORT DATA OPTIONS
.
SQL
Use a declaração EXPORT DATA
.
O exemplo seguinte exporta os campos selecionados de uma tabela denominada mydataset.table1
:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaraçã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, consulte o artigo Execute uma consulta interativa.
bq
Use o comando bq extract
com a flag --destination_format
.
(Opcional) Forneça a flag --location
e defina o valor para a sua
localização.
Outras flags opcionais incluem:
--compression
: o tipo de compressão a usar para ficheiros exportados.--field_delimiter
: o caráter que indica o limite entre colunas no ficheiro de saída para exportações CSV. São permitidos\t
etab
para delimitadores de tabulações.--print_header
: quando especificado, 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
Onde:
- location é o nome da sua localização. A flag
--location
é opcional. Por exemplo, se estiver a usar o BigQuery na região de Tóquio, pode definir o valor da flag comoasia-northeast1
. Pode predefinir um valor para a localização através do ficheiro.bigqueryrc. - format é o formato dos dados exportados:
CSV
,NEWLINE_DELIMITED_JSON
,AVRO
ouPARQUET
. - compression_type é um tipo de compressão suportado para o seu formato de dados. Consulte os formatos de exportação e os tipos de compressão.
- delimiter é o caráter que indica o limite entre colunas nas exportações CSV.
\t
etab
são nomes aceites para o separador. - boolean é
true
oufalse
. Quando definido comotrue
, as linhas de cabeçalho são impressas nos dados exportados se o formato de dados suportar cabeçalhos. O valor predefinido étrue
. - project_id é o ID do seu projeto.
- dataset é o nome do conjunto de dados de origem.
- table é a tabela que está a exportar. Se usar um decorador de partições, tem de colocar o caminho da tabela entre aspas simples ou usar o caráter
$
. - bucket é o nome do contentor do Cloud Storage para o qual está a exportar os dados. O conjunto de dados do BigQuery e o contentor do Cloud Storage têm de estar na mesma localização.
- filename.ext é o nome e a extensão do ficheiro de dados exportado. Pode exportar para vários ficheiros usando um caráter universal.
Exemplos:
Por exemplo, o comando seguinte exporta mydataset.mytable
para um ficheiro comprimido com gzip denominado myfile.csv
. myfile.csv
é armazenado num contentor do Cloud Storage denominado example-bucket
.
bq extract \ --compression GZIP \ 'mydataset.mytable' \ gs://example-bucket/myfile.csv
O formato de destino predefinido é CSV. Para exportar para JSON ou Avro, use a flag destination_format
e defina-a como NEWLINE_DELIMITED_JSON
ou AVRO
. Por exemplo:
bq extract \ --destination_format NEWLINE_DELIMITED_JSON \ 'mydataset.mytable' \ gs://example-bucket/myfile.json
O comando seguinte exporta mydataset.mytable
para um ficheiro Avro comprimido com Snappy. O ficheiro tem o nome myfile.avro
. myfile.avro
é
exportado para um contentor do Cloud Storage com o nome example-bucket
.
bq extract \ --destination_format AVRO \ --compression SNAPPY \ 'mydataset.mytable' \ gs://example-bucket/myfile.avro
O comando seguinte exporta uma única partição de mydataset.my_partitioned_table
para um ficheiro 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 uma tarefa extract
e preencha a configuração da tarefa.
(Opcional) Especifique a sua localização na propriedade location
na secção jobReference
do recurso de emprego.
Crie uma tarefa de extração que aponte para os dados de origem do BigQuery e o destino do Cloud Storage.
Especifique a tabela de origem através do 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)
tem de ser totalmente qualificada, no formatogs://bucket/filename.ext
. Cada URI pode conter um caráter universal "*" e tem de aparecer depois do nome do contentor.Especifique o formato de dados definindo a propriedade
configuration.extract.destinationFormat
. Por exemplo, para exportar um ficheiro JSON, defina esta propriedade para o valorNEWLINE_DELIMITED_JSON
.Para verificar o estado da tarefa, chame jobs.get(job_id) com o ID da tarefa devolvido pelo pedido inicial.
- Se
status.state = DONE
, a tarefa foi concluída com êxito. - Se a propriedade
status.errorResult
estiver presente, o pedido falhou e esse objeto inclui informações que descrevem o que correu mal. - Se
status.errorResult
estiver ausente, a tarefa foi concluída com êxito, embora possam ter ocorrido alguns erros não fatais. Os erros não fatais são apresentados na propriedadestatus.errors
do objeto de trabalho devolvido.
- Se
Notas da API:
Como prática recomendada, gere um ID exclusivo e transmita-o como
jobReference.jobId
quando chamarjobs.insert
para criar uma tarefa. Esta abordagem é mais robusta em caso de falha de rede, uma vez que o cliente pode sondar ou tentar novamente com o ID da tarefa conhecido.A chamada de
jobs.insert
num determinado ID da tarefa é idempotente. Por outras palavras, pode tentar novamente quantas vezes quiser no mesmo ID da tarefa e, no máximo, uma dessas operações vai ter êxito.
C#
Antes de experimentar este exemplo, siga as C#instruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API C# BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
PHP
Antes de experimentar este exemplo, siga as PHPinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API PHP BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Ruby
Antes de experimentar este exemplo, siga as Rubyinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Ruby BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Exporte metadados de tabelas
Para exportar metadados de tabelas de tabelas Iceberg, use a seguinte declaração SQL:
EXPORT TABLE METADATA FROM `[[PROJECT_NAME.]DATASET_NAME.]TABLE_NAME`;
Substitua o seguinte:
- PROJECT_NAME: o nome do projeto para a tabela. O valor é predefinido para o projeto que executa esta consulta.
- DATASET_NAME: o nome do conjunto de dados para a tabela.
- TABLE_NAME: o nome da tabela.
Os metadados exportados encontram-se na pasta STORAGE_URI/metadata
, onde STORAGE_URI é a localização de armazenamento da tabela definida nas opções.
Exporte os resultados da consulta
Pode exportar os resultados da consulta para o Cloud Storage na Google Cloud consola com os seguintes passos:
Abra a página do BigQuery na Google Cloud consola.
Clique em
Consulta SQL.Introduza uma consulta GoogleSQL válida na área de texto do editor de consultas.
Clique em Executar.
Quando os resultados forem devolvidos, clique em Guardar resultados > Armazenamento na nuvem.
Na caixa de diálogo Exportar para o Google Cloud Storage:
- Para Localização do GCS, procure o contentor, a pasta ou o ficheiro onde quer exportar os dados.
- Para Formato de exportação, escolha o formato dos dados exportados: CSV, JSON (delimitado por nova linha), Avro ou Parquet.
- Em Compressão, selecione um formato de compressão ou selecione
None
para não comprimir.
Clique em Guardar para exportar os resultados da consulta.
Para verificar o progresso da tarefa, expanda o painel Histórico de tarefas e
procure a tarefa do tipo EXTRACT
.
Detalhes da exportação Avro
O BigQuery expressa os dados formatados em Avro das seguintes formas:
- Os ficheiros de exportação resultantes são ficheiros de contentores Avro.
- Cada linha do BigQuery é representada como um registo Avro. Os dados aninhados são representados por objetos de registo aninhados.
- Os campos
REQUIRED
são representados como os tipos Avro correspondentes. Por exemplo, um tipoINTEGER
do BigQuery é mapeado para um tipoLONG
do Avro. - 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 o tipo lógicotimestamp-micros
(anota um tipoLONG
do Avro) por predefinição nas tarefas de extração e no SQL de exportação de dados. (Atenção: pode adicionaruse_avro_logical_types=False
aExport Data Options
para desativar o tipo lógico, para que use o tipostring
na coluna de data/hora. No entanto, nos trabalhos de extração, usa sempre o tipo lógico Avro.) - Os tipos de dados
DATE
são representados como o tipo lógicodate
(anota os tipos Avro) por predefinição no SQL de exportação de dados, mas são representados como o tipostring
por predefinição em tarefas de extração.INT
(Nota: pode adicionaruse_avro_logical_types=False
aExport Data Options
para desativar o tipo lógico ou usar a flag--use_avro_logical_types=True
para ativar o tipo lógico em trabalhos de extração.) - Os tipos de dados
TIME
são representados como o tipo lógicotimestamp-micro
(anota os tiposLONG
do Avro) por predefinição no SQL de exportação de dados, mas são representados como o tipostring
por predefinição nos trabalhos de extração. (Nota: pode adicionaruse_avro_logical_types=False
aExport Data Options
para desativar o tipo lógico ou usar a flag--use_avro_logical_types=True
para ativar o tipo lógico em trabalhos de extração.) - Os tipos de dados
DATETIME
são representados como tiposSTRING
(um tipo de string com o tipo lógico denominado personalizadodatetime
) por predefinição no SQL de exportação de dados, mas são representados como o tipostring
por predefinição em tarefas de extração. (Nota: pode adicionaruse_avro_logical_types=False
aExport Data Options
para desativar o tipo lógico ou usar a flag--use_avro_logical_types=True
para ativar o tipo lógico em tarefas de extração.) - Os tipos RANGE não são suportados na exportação Avro.
Os tipos de dados NUMERIC(P[, S])
e BIGNUMERIC(P[, S])
parametrizados transferem os respetivos parâmetros de precisão e tipo de escala para o tipo lógico decimal Avro.
Não é possível usar o formato Avro em combinação com a compressão GZIP. Para comprimir dados Avro, use a ferramenta de linhas de comando bq ou a API e especifique um dos tipos de compressão suportados para dados Avro: DEFLATE
ou SNAPPY
.
Detalhes da exportação Parquet
O BigQuery converte os tipos de dados 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) |
Vírgula flutuante | FLOAT |
NONE |
Booleano | BOOLEAN |
NONE |
String | BYTE_ARRAY |
STRING (UTF8) |
Bytes | BYTE_ARRAY |
NONE |
Data | INT32 |
DATE |
Data/hora | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
Hora | INT64 |
TIME (isAdjustedToUTC = true, unit = MICROS) |
Indicação de tempo | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
Geografia | BYTE_ARRAY |
GEOGRAPHY (edges = spherical) |
O esquema Parquet representa dados aninhados como um grupo e registos repetidos como grupos repetidos. Para mais informações sobre a utilização de dados aninhados e repetidos no BigQuery, consulte o artigo Especificar colunas aninhadas e repetidas.
Pode usar as seguintes soluções alternativas para os tipos DATETIME
:
- Carregue o ficheiro para uma tabela de preparação. Em seguida, use uma consulta SQL para converter o campo num tipo de dados
DATETIME
e guarde o resultado numa nova tabela. Para mais informações, consulte o artigo Alterar o tipo de dados de uma coluna. - Forneça um esquema para a tabela usando a flag
--schema
na tarefa de carregamento. Defina a coluna de data/hora comocol:DATETIME
.
O tipo lógico GEOGRAPHY
é representado com metadados GeoParquet adicionados aos ficheiros exportados.
Exportar dados para um ou mais ficheiros
A propriedade destinationUris
indica uma ou mais localizações e nomes de ficheiros para onde o BigQuery deve exportar os seus ficheiros.
O BigQuery suporta um único operador de carateres universais (*) em cada URI. O caráter
universal pode aparecer em qualquer parte do componente do nome do ficheiro. A utilização do operador de carateres universais indica ao BigQuery que deve criar vários ficheiros fragmentados com base no padrão fornecido. O operador de carateres universais é substituído por um número (a começar em 0), com preenchimento à esquerda até 12 dígitos. Por exemplo, um URI com um caráter universal no final do nome do ficheiro criaria ficheiros com 000000000000
anexado ao primeiro ficheiro e 000000000001
anexado ao segundo ficheiro, continuando nesse padrão.
A tabela seguinte descreve várias opções possíveis para a propriedade destinationUris
:
Opções de destinationUris |
|
---|---|
URI único |
Use um único URI se estiver a exportar dados de tabelas com 1 GB ou menos. Esta opção é o exemplo de utilização mais comum, uma vez que os dados exportados são
geralmente inferiores ao valor máximo de 1 GB. Esta opção não é
suportada para a
declaração
Definição da propriedade:
Cria: gs://my-bucket/file-name.json |
URI com um único caráter universal |
Só é possível usar um caráter universal no componente do nome do ficheiro do URI. Use um URI com carateres universais único se considerar que os dados exportados vão ser superiores ao valor máximo de 1 GB. O BigQuery divide os seus dados em vários ficheiros com base no padrão fornecido. O tamanho dos ficheiros exportados varia. Definição da propriedade:
Cria: gs://my-bucket/file-name-000000000000.json gs://my-bucket/file-name-000000000001.json gs://my-bucket/file-name-000000000002.json ...
Cria: gs://my-bucket/000000000000 gs://my-bucket/000000000001 gs://my-bucket/000000000002 ... |
Limite o tamanho do ficheiro exportado
Quando exporta mais de 1 GB de dados numa única exportação, tem de usar um caráter universal para exportar os dados para vários ficheiros, e o tamanho dos ficheiros varia. Se precisar de limitar o tamanho máximo de cada ficheiro exportado, uma opção é particionar aleatoriamente os dados e, em seguida, exportar cada partição para um ficheiro:
- Determine o número de partições de que precisa, que é igual ao tamanho total dos seus dados dividido pelo tamanho do ficheiro exportado escolhido. Por exemplo, se tiver 8000 MB de dados e quiser que cada ficheiro exportado tenha aproximadamente 20 MB, precisa de 400 partições.
Crie uma nova tabela particionada e agrupada por uma nova coluna gerada aleatoriamente denominada
export_id
. O exemplo seguinte mostra como criar uma novaprocessed_table
a partir de uma tabela existente denominadasource_table
que requern
partições para atingir o tamanho do ficheiro escolhido: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 declaraçãoEXPORT DATA
na seguinte consulta:SELECT * EXCEPT(export_id) FROM my_dataset.processed_table WHERE export_id = i;
Extraia a tabela comprimida
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Exemplo de utilização
Este exemplo mostra como pode exportar dados para o Cloud Storage.
Suponhamos que está a fazer streaming de dados para o Cloud Storage a partir de registos de pontos finais de forma contínua. Um resumo diário deve ser exportado para o Cloud Storage para fins de cópia de segurança e arquivo. A melhor escolha é uma tarefa de extração sujeita a determinadas quotas e limitações.
Envie uma tarefa de extração com a
API
ou as
bibliotecas cliente,
transmitindo um ID exclusivo como jobReference.jobId
. As tarefas de extração são
assíncronas.
Verifique o estado da tarefa
através do ID exclusivo da tarefa usado para criar a tarefa. O trabalho foi concluído com êxito se status.status
for DONE
. Se status.errorResult
estiver presente,
a tarefa falhou e tem de ser repetida.
Processamento de dados em lote
Suponhamos que é usado um trabalho em lote noturno para carregar dados até um prazo fixo. Após a conclusão desta tarefa de carregamento, é materializada uma tabela com estatísticas a partir de uma consulta, conforme descrito na secção anterior. Os dados desta tabela são obtidos e compilados num relatório PDF e enviados a um regulador.
Uma vez que a quantidade de dados que tem de ser lida é pequena, use a API
tabledata.list
para obter todas as linhas da tabela no formato de dicionário JSON. Se existir mais do que uma página de dados, os resultados têm a propriedade pageToken
definida. Para obter 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 da API falhar com um erro 5xx, tente novamente com retirada exponencial. Não é possível repetir a maioria dos erros 4xx. Para uma melhor separação da exportação do BigQuery e da geração de relatórios, os resultados devem ser mantidos no disco.
Política de quotas
Para informações sobre as quotas de tarefas de exportação, consulte o artigo Tarefas de exportação na página Quotas e limites.
As estatísticas de utilização dos trabalhos de exportação estão disponíveis no INFORMATION_SCHEMA
.
A entrada da tarefa nas tabelas do sistema JOBS_BY_*
para a tarefa de exportação contém um valor total_bytes_processed
que pode ser usado para monitorizar a utilização agregada para garantir que permanece abaixo de 50 TiB por dia. Para saber como consultar a vista INFORMATION_SCHEMA.JOBS
para obter o valor total_bytes_processed
, consulte o INFORMATION_SCHEMA.JOBS
esquema
Veja a utilização atual da quota
Pode ver a sua utilização atual de tarefas de consulta, carregamento, extração ou cópia executando uma consulta INFORMATION_SCHEMA
para ver metadados sobre as tarefas executadas durante um período especificado. Pode comparar a sua utilização atual com o limite da quota para determinar a utilização da quota para um tipo específico de tarefa. A seguinte consulta de exemplo usa a vista INFORMATION_SCHEMA.JOBS
para listar o número de tarefas 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-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE date(creation_time)= CURRENT_DATE()
Pode configurar uma política de alertas do Cloud Monitoring que monitoriza o número de bytes exportados.
-
Na Google Cloud consola, aceda à página notifications Alertas:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
Na página Alertas, clique em Criar política.
Em Modo de configuração de políticas, selecione Editor de código (MQL ou PromQL).
No editor de consultas PromQL, introduza a seguinte consulta:
( sum by (project_id, quota_metric, location) (increase({"serviceruntime.googleapis.com/quota/rate/net_usage", monitored_resource="consumer_quota", service="bigquery.googleapis.com"}[1m])) / max by (project_id, quota_metric, location) ({"serviceruntime.googleapis.com/quota/limit", monitored_resource="consumer_quota", service="bigquery.googleapis.com", limit_name="ExtractBytesPerDay"}) ) > 0.01
Se a opção Executar automaticamente não estiver ativada, clique em Executar consulta.
Configure o resto do alerta e clique em Criar política.
Para ver passos detalhados sobre a criação de políticas de alerta baseadas em PromQL, consulte o artigo Crie políticas de alerta baseadas em PromQL (consola).
Resolução de problemas
Para diagnosticar problemas com tarefas de extração, pode usar o Explorador de registos para rever os registos de uma tarefa de extração específica e identificar possíveis erros. O filtro do Explorador de registos seguinte devolve informações sobre as suas tarefas 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 obter informações sobre os preços da exportação de dados, consulte a página Preços do BigQuery.
Depois de exportados, os dados são cobrados pelo respetivo armazenamento no Cloud Storage. Para mais informações, consulte os preços do Cloud Storage.
Segurança da mesa
Para controlar o acesso a tabelas no BigQuery, consulte o artigo Controle o acesso a recursos com a IAM.
O que se segue?
- Para saber mais acerca da Google Cloud consola, consulte o artigo Usar a Google Cloud consola.
- Para saber mais sobre a ferramenta de linhas de comando bq, consulte o artigo Usar a ferramenta de linhas de comando bq.
- Para saber como criar uma aplicação com as bibliotecas cliente da API BigQuery, consulte o Início rápido da biblioteca cliente.