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 atual 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.

Como escolher um formato de ingestão de dados

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

  • 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 simples e aninhados ou 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 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.

Próximas etapas