Como carregar dados em lote | BigQuery | Google Cloud
Carregue dados no BigQuery do Cloud Storage ou de um arquivo local como operação em lote. Os dados de origem podem estar em qualquer um destes formatos:
Exportações do Firestore armazenadas no Cloud Storage.
Você também pode usar o serviço de transferência de dados do BigQuery para configurar cargas recorrentes do Cloud Storage para o BigQuery.
Para saber como carregar dados no BigQuery, consulte a página do seu formato de dados:
Para saber como configurar um carregamento recorrente do Cloud Storage para o BigQuery, consulte Transferências do Cloud Storage.
Não é possível alterar o local de um conjunto de dados após a criação, mas é possível fazer uma cópia dele ou movê-lo manualmente. Veja mais informações em:
Como recuperar o URI do Cloud Storage
Observação: também é possível usar o comando gsutil ls para listar buckets ou objetos.
Para adicionar um caractere curinga ao URI do Cloud Storage, adicione um asterisco (*) ao nome de base. Por exemplo, se você tiver dois arquivos chamados fed-sample000001.csv e fed-sample000002.csv em uma pasta chamada fed-samples, o URI curinga será gs://mybucket/fed-samples/fed-sample*. Em seguida, use esse URI com caractere curinga no Console do Cloud, na ferramenta de linha de comando bq, na API ou nas bibliotecas de cliente.
Como outro exemplo, se você quiser carregar apenas os arquivos CSV, poderá usar gs://mybucket/fed-samples/*.csv. Esse URI com caractere curinga também inclui os arquivos em qualquer subpasta desse caminho que correspondam ao padrão do nome base; Por exemplo, gs://mybucket/fed-samples/temp/temp-file.csv. Para corresponder apenas aos arquivos de uma pasta específica, use um padrão de correspondência de arquivos em vez de um padrão correspondente à pasta. Por exemplo, gs://mybucket/fed-samples/fed-sample*.csv.
Observação: em algumas plataformas, ao usar a ferramenta de linha de comando bq, talvez seja necessário evitar o asterisco.
O caractere curinga de asterisco não é permitido quando você faz o seguinte:
criar tabelas externas vinculadas a exportações do Datastore ou do Firestore.
carregar dados de exportação do Datastore ou do Firestore do Cloud Storage.
O BigQuery não é compatível com o controle de versões de objetos do Cloud Storage. Se você incluir um número de geração no URI do Cloud Storage, o job de carregamento falhará.
É possível carregar dados de uma fonte legível (como sua máquina local) usando uma das seguintes opções:
Ao carregar dados usando o Console do Cloud ou a ferramenta de linha de comando bq, um job de carregamento é criado automaticamente.
No painel de navegação, na seção Recursos, amplie seu projeto do Google Cloud e selecione um conjunto de dados.
No lado direito da janela, no painel de detalhes, clique em Criar tabela. O processo de carregamento de dados é igual ao de criação de uma tabela vazia.
Em Criar tabela de, selecione Fazer upload.
Abaixo de Selecionar arquivo, clique em Procurar.
Encontre o arquivo e clique em Abrir. Observe que os caracteres curinga e as listas separadas por vírgulas não são compatíveis com arquivos locais.
Em Formato do arquivo, selecione (CSV), JSON (delimitado por nova linha), Avro, Parquet ou ORC.
Em arquivos CSV e JSON, marque a opção Detectar automaticamente para ativar a detecção automática de esquema. As informações de esquema são autodescritas nos dados de origem para outros tipos de arquivos compatíveis.
Outra opção é inserir informações de esquema manualmente:
Clique em Editar como texto e insira o esquema da tabela como uma matriz JSON:
Observação: é possível ver o esquema de uma tabela existente no formato JSON ao inserir o seguinte comando: bq show --format=prettyjson dataset.table.
Selecione itens aplicáveis na seção Opções avançadas. Para informações sobre as opções disponíveis, consulte Opções de CSV e Opções de JSON.
Opcional: em Opções avançadas, selecione a disposição de gravação:
Gravar apenas se a tabela estiver vazia: grave os dados somente se a tabela estiver vazia.
Anexar à tabela: anexa os dados no final da tabela. Essa configuração é a padrão.
Substituir tabela: apague todos os dados atuais na tabela antes de gravar os novos.
Use o comando bq load, especifique o source_format e inclua o caminho para o arquivo local.
Se você estiver carregando dados em um projeto diferente do projeto padrão, adicione o ID do projeto ao conjunto de dados usando o seguinte formato: PROJECT_ID:DATASET.
LOCATION: seu local. A sinalização --location é opcional. Por exemplo, se você estiver usando o BigQuery na região de Tóquio, defina o valor da sinalização como asia-northeast1. É possível definir um valor padrão para o local usando o arquivo .bigqueryrc.
FORMAT: CSV, AVRO, PARQUET, ORC, ou NEWLINE_DELIMITED_JSON.
dataset: um conjunto de dados existente.
path_to_source: o caminho para o arquivo local.
schema: um esquema válido. É possível que ele seja um arquivo JSON local ou inserido in-line como parte do comando. Também é possível usar a sinalização --autodetect em vez de fornecer uma definição de esquema.
Além disso, é possível adicionar sinalizações para opções que permitem controlar como o BigQuery analisa seus dados. Por exemplo, use a sinalização --skip_leading_rows para ignorar linhas de cabeçalho em um arquivo CSV. Para mais informações, consulte Opções de CSV e Opções de JSON.
O comando a seguir carrega um arquivo JSON delimitado por nova linha (mydata.json) em uma tabela chamada mytable em mydataset em seu projeto padrão. O esquema é definido em um arquivo de esquema local denominado myschema.json.
O comando a seguir carrega um arquivo CSV local (mydata.csv) em uma tabela chamada mytable em mydataset e em myotherproject. O esquema é definido in-line no formato FIELD:DATA_TYPE, FIELD:DATA_TYPE.
Observação: quando você especifica o esquema na linha de comando, não é possível incluir um tipo RECORD (STRUCT), inserir uma descrição de campo ou especificar o modo de campo. Todos os modos de campo têm NULLABLE como padrão. Para incluir descrições de campos, modos e tipos RECORD, forneça um arquivo de esquema JSON.
O comando a seguir carrega um arquivo CSV local (mydata.csv) em uma tabela chamada mytable em mydataset em seu projeto padrão. O esquema é definido por meio da detecção automática de esquema.
O código a seguir demonstra como carregar um arquivo CSV local em uma nova Tabela do BigQuery. Para carregar um arquivo local de outro formato, use a classe de opções de atualização referente ao formato apropriado da classe base JobCreationOptions em vez de UploadCsvOptions.
O código a seguir demonstra como carregar um arquivo CSV local em uma nova Tabela do BigQuery. Para carregar um arquivo local de outro formato, defina a propriedade DataFormat (em inglês) de NewReaderSource com o formato apropriado.
O código a seguir demonstra como carregar um arquivo CSV local em uma nova Tabela do BigQuery. Para carregar um arquivo local de outro formato, defina as FormatOptions (em inglês) com o formato apropriado.
O código a seguir demonstra como carregar um arquivo CSV local em uma nova Tabela do BigQuery. Para carregar um arquivo local de outro formato, defina o parâmetro metadata da função load (em inglês) com o formato apropriado.
O código a seguir demonstra como carregar um arquivo CSV local em uma nova Tabela do BigQuery. Para carregar um arquivo local de outro formato, defina sourceFormat (em inglês) com o formato apropriado.
O código a seguir demonstra como carregar um arquivo CSV local em uma nova Tabela do BigQuery. Para carregar um arquivo local de outro formato, defina a propriedade LoadJobConfig.source_format (em inglês) com o formato apropriado.
O código a seguir demonstra como carregar um arquivo CSV local em uma nova Tabela do BigQuery. Para carregar um arquivo local de outro formato, defina o parâmetro format do método Table#load_job com o formato apropriado.
O carregamento de dados a partir de uma fonte de dados local está sujeito às seguintes limitações:
Os caracteres curinga e as listas separadas por vírgulas não são compatíveis com o carregamento de arquivos de uma fonte de dados local. Os arquivos precisam ser carregados individualmente.
Ao usar o Console do Cloud, os arquivos carregados de uma fonte de dados local não podem exceder 10 MB. Para arquivos maiores, carregue o arquivo do Cloud Storage.
Como carregar dados compactados e descompactados
O formato binário Avro é o formato preferido para carregar dados compactados e não compactados. O carregamento de dados Avro é mais rápido porque eles podem ser lidos em paralelo mesmo quando os blocos de dados estão compactados. Os arquivos Avro compactados não são compatíveis, mas blocos de dados compactados são. Consulte Compactação Avro.
O formato binário Parquet também é uma boa opção, porque a eficiente codificação por coluna do Parquet normalmente resulta em uma taxa de compactação melhor e em arquivos menores. Os arquivos Parquet também aproveitam as técnicas de compactação em que é possível carregar os arquivos em paralelo. Os arquivos Parquet compactados não são compatíveis, mas os blocos de dados compactados são. Consulte Compactação Parquet.
O formato binário ORC oferece benefícios semelhantes aos do formato Parquet. O carregamento de dados nos arquivos ORC é rápido porque as faixas de dados podem ser lidas em paralelo. As linhas em cada faixa de dados são carregadas sequencialmente. Para otimizar o tempo de carregamento, use um tamanho de faixa de dados de aproximadamente 256 MB ou menos. Os arquivos ORC compactados não são compatíveis, mas o rodapé e as divisões do arquivo compactado são. Consulte Compactação ORC.
Para outros formatos de dados, como CSV e JSON, o carregamento de arquivos não compactados no BigQuery pode ser feito muito mais rápido do que o carregamento de arquivos compactados, porque os não compactados podem ser lidos em paralelo. Como os arquivos não compactados são maiores, usá-los pode causar limitações de largura de banda e custos mais elevados com o Google Cloud Storage para dados organizados no Google Cloud Storage antes do carregamento no BigQuery. Lembre-se de que a ordenação em linha não é garantida para arquivos compactados ou não compactados. É importante ponderar essas desvantagens, dependendo do caso de uso.
Em geral, se a largura de banda for limitada, compacte os arquivos CSV e JSON usando o gzip antes de fazer o upload deles para o Cloud Storage. Quando se trata de carregar dados no BigQuery, o gzip é o único tipo de compactação de arquivos compatível com os formatos CSV e JSON, até o momento. Se a velocidade de carregamento for importante para o aplicativo e você tiver muita largura de banda para carregar seus dados, não compacte os arquivos.
Como anexar ou substituir uma tabela
É possível carregar mais dados para uma tabela de arquivos de origem ou anexando resultados de consultas. Se o esquema dos dados não corresponder ao da tabela ou partição de destino, você poderá substitui-lo ou atualizá-lo quando anexar à tabela.
Quando você atualiza o esquema anexando dados, o BigQuery permite:
adicionar novos campos;
relaxar os campos REQUIRED para NULLABLE.
Ao substituir uma tabela, o esquema é sempre alterado. Nesse processo, as atualizações de esquema não são restritas.
No Console do Cloud, use a opção Preferência de gravação para especificar qual ação será realizada ao carregar dados de um arquivo de origem ou de um resultado de consulta. A ferramenta de linha de comando bq e a API incluem as seguintes opções:
Anexar à tabela --noreplace ou --replace=false; se --replace não for especificado, o padrão será anexado WRITE_APPEND (Padrão) Anexa os dados ao final da tabela.
Substituir tabela --replace ou --replace=true WRITE_TRUNCATE Apaga todos os dados da tabela antes de gravar os novos.
Para informações sobre a política de cotas para carregamento de dados em lote, consulte Jobs de carregamento na página "Cotas e limites".
Atualmente, não há cobrança pelo carregamento de dados em lote no BigQuery. Para mais informações, consulte Preços de ingestão de dados do BigQuery.