Introdução ao carregamento de dados

Nesta página, você terá uma visão geral sobre o carregamento de dados no BigQuery.

Visão geral

Há várias situações em que é possível consultar dados sem carregá-los. Em todas as outras situações, você precisa carregar os dados no BigQuery antes de executar as consultas.

Para carregar dados no BigQuery, é possível:

No momento, o carregamento de dados no BigQuery pelo Drive não é compatível. No entanto, consulte dados no Drive usando uma tabela externa.

Também é possível carregar dados em uma nova tabela ou partição, anexar dados a uma tabela ou partição existente ou substituir uma tabela ou partição. Para mais informações sobre como trabalhar com partições, consulte Como gerenciar tabelas particionadas. Quando os dados são carregados no BigQuery, eles são convertidos em Capacitor (em inglês), o formato de armazenamento em colunas do BigQuery.

Limitações

O carregamento de dados no BigQuery está sujeito a algumas limitações, dependendo do local e do formato dos dados de origem:

Como escolher um formato de ingestão de dados

Ao carregar dados, escolha um formato de ingestão com base nos seguintes fatores:

  • Suporte a esquemas.

    As exportações Avro, ORC, Parquet e Datastore, além das exportações do Firestore, são autodescritivas. O esquema de tabela é criado automaticamente pelo BigQuery com base nos dados de origem. Em dados JSON e CSV, forneça um esquema explícito ou use a detecção automática de esquema.

  • Dados simples ou campos aninhados e repetidos.

    Avro, CSV, JSON, ORC e Parquet aceitam dados simples. As exportações Avro, JSON, ORC, Parquet e Datastore, além das exportações do Firestore, também são compatíveis com dados que têm campos repetidos e aninhados. Dados aninhados e repetidos são úteis para expressar hierarquia. Campos repetidos e aninhados também reduzem duplicações ao desnormalizar os dados.

  • Novas linhas incorporadas.

    Quando você carrega dados de arquivos JSON, as linhas precisam ser delimitadas. No BigQuery, é esperado que arquivos JSON delimitados por nova linha tenham um único registro por linha.

  • Codificação.

    O BigQuery é compatível com a codificação UTF-8 para dados aninhados ou simples e repetidos. Ele também é compatível com a codificação ISO-8859-1 para dados simples apenas de arquivos CSV.

  • Limitações externas.

    A origem dos dados pode ser um banco de dados de armazenamento de documentos que armazena dados nativamente no formato JSON. Ou pode ser uma fonte que só exporta para o formato CSV.

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. O BigQuery é compatível com os codecs DEFLATE e Snappy para blocos de dados compactados em arquivos 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. O BigQuery é compatível com os codecs Snappy, GZip e LZO_1X para blocos de dados compactados em arquivos 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. O BigQuery é compatível com a compactação Zlib, Snappy, LZO e LZ4 para rodapés e divisões de arquivos 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 carregar dados desnormalizados, aninhados e repetidos

Muitos desenvolvedores estão acostumados a trabalhar com bancos de dados relacionais e esquemas de dados normalizados. A normalização evita que dados duplicados sejam armazenados e oferece consistência quando os dados são atualizados regularmente.

O BigQuery funciona melhor quando os dados são desnormalizados. Em vez de preservar um esquema relacional, como um esquema em estrela ou floco de neve, desnormalize os dados e aproveite os campos aninhados e repetidos para melhorar o desempenho. Os campos aninhados e repetidos podem ser vinculados sem impactar o desempenho na tentativa de preservar um esquema relacional (normalizado).

A economia de armazenamento pelo uso de dados normalizados tem menos efeito nos sistemas modernos. Os ganhos de desempenho da desnormalização de dados compensam os aumentos nos custos de armazenamento. As junções exigem coordenação de dados (largura de banda de comunicação). A desnormalização localiza os dados em slots individuais. Dessa forma, a execução pode ser feita em paralelo.

Para manter vínculos enquanto desnormaliza os dados, use campos aninhados e repetidos em vez de nivelar completamente os dados. Quando os dados relacionais estão completamente nivelados, a comunicação de rede (embaralhamento) pode afetar negativamente o desempenho da consulta.

Por exemplo, desnormalizar um esquema de pedidos sem usar campos repetidos e aninhados pode exigir que você agrupe os dados por um campo como order_id (quando há um vínculo de um para muitos). Devido ao embaralhamento envolvido, o agrupamento dos dados é menos eficiente do que a desnormalização dos dados usando campos aninhados e repetidos.

Em algumas circunstâncias, a desnormalização dos dados e o uso de campos aninhados e repetidos não aumentam o desempenho. Evite a desnormalização nestes casos de uso:

  • Você tem um esquema em estrela com dimensões que mudam frequentemente.
  • O BigQuery complementa um sistema de processamento de transações on-line (OLTP, na sigla em inglês) com mutação no nível da linha, mas não pode substituí-lo.

Campos aninhados e repetidos são compatíveis com os seguintes formatos de dados:

  • Avro
  • JSON (delimitado por nova linha)
  • ORC
  • Parquet
  • Exportações do Datastore
  • Exportações do Firestore

Para saber mais sobre como especificar campos repetidos e aninhados no seu esquema quando estiver carregando dados, consulte Como especificar campos repetidos e aninhados.

Como carregar dados de outros serviços do Google

Serviço de transferência de dados do BigQuery

O serviço de transferência de dados do BigQuery automatiza o carregamento de dados no BigQuery a partir destes serviços:

Aplicativos de Software as a Service (SaaS) do Google Provedores de armazenamento em nuvem externos Armazenamento de dados Além disso, várias transferências de terceiros estão disponíveis no Google Cloud Marketplace.

Depois de configurar uma transferência de dados, o serviço de transferência de dados do BigQuery programa e gerencia, automaticamente, carregamentos de dados recorrentes do aplicativo de origem para o BigQuery.

Google Analytics 360

Para saber como exportar sua sessão e dados de hits da vista de relatórios do Google Analytics 360 para o BigQuery, consulte Exportação para o BigQuery na Central de Ajuda do Analytics.

Para exemplos de como consultar dados do Analytics no BigQuery, consulte o manual do BigQuery na Ajuda do Analytics.

Dataflow

Com o Dataflow, é possível carregar dados diretamente no BigQuery. Para mais informações sobre como usar o Dataflow para ler e gravar no BigQuery, consulte conector de E/S do BigQuery (em inglês) na documentação do Apache Beam.

Alternativas ao carregamento de dados

Não é preciso carregar dados antes de executar consultas nas seguintes situações:

Conjuntos de dados públicos
Conjuntos de dados públicos são conjuntos de dados armazenados no BigQuery e compartilhados publicamente. Para mais informações, consulte Conjuntos de dados públicos do BigQuery.
Conjuntos de dados compartilhados
É possível compartilhar conjuntos de dados armazenados no BigQuery. Se alguém tiver compartilhado um conjunto de dados com você, é possível executar consultas nele sem a necessidade de carregar os dados.
Fontes de dados externas
É possível ignorar o processo de carregamento de dados criando uma tabela baseada em uma fonte de dados externa. Para mais informações sobre os benefícios e limitações dessa abordagem, consulte fontes de dados externas.
Arquivos de geração de registros
O Cloud Logging é uma opção para exportar arquivos de registros para o BigQuery. Para mais informações, consulte Como exportar com o visualizador de registros.

Outra alternativa ao carregamento de dados é o streaming de dados de um registro de cada vez. Normalmente, o streaming é usado quando você precisa que os dados estejam disponíveis de imediato. Para informações sobre streaming, consulte Como fazer streaming de dados no BigQuery.

Política de cotas

Para informações sobre a política de cotas para carregamento de dados, consulte Jobs de carregamento na página "Cotas e limites".

Preços

Atualmente, não há cobrança pelo carregamento de dados no BigQuery. Para mais informações, consulte a página de preços.

Próximas etapas