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.

É possível carregar dados:

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, ou substituir uma tabela ou partição. Para mais informações sobre como trabalhar com partições, consulte Como gerenciar tabelas particionadas.

Ao carregar dados no BigQuery, forneça o esquema de tabela ou partição. No caso de formatos de dados compatíveis, use a detecção automática de esquema.

Limitações

O carregamento de dados no BigQuery está sujeito às seguintes limitações:

  • É possível carregar dados no BigQuery somente de uma fonte de dados legível, como sua máquina local, ou do Cloud Storage.

Dependendo do local e formato dos seus dados de origem, talvez haja limitações específicas. Para mais informações, veja:

Formatos de dados compatíveis

O BigQuery é compatível com o carregamento de dados do Cloud Storage e de fontes de dados legíveis nos seguintes formatos:

O formato de origem padrão para o carregamento de dados é CSV. Para carregar dados armazenados em um dos outros formatos de dados compatíveis, especifique o formato claramente. Quando os dados são carregados no BigQuery, eles são convertidos no formato de colunas do Capacitor, o formato de armazenamento do BigQuery.

Como escolher um formato de ingestão de dados

Carregue dados no BigQuery em vários formatos. Quando os dados são carregados no BigQuery, eles são convertidos no formato de colunas do Capacitor, o formato de armazenamento do BigQuery.

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

  • O esquema dos dados.

    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.

  • 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 fazer o carregamento de dados codificados

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.

Codificações de caracteres

Por padrão, o serviço BigQuery espera que todos os dados de origem estejam no formato UTF-8. Opcionalmente, se você tiver arquivos CSV com dados codificados no formato ISO-8859-1, será possível especificar explicitamente a codificação ao importar seus dados. Assim, o BigQuery consegue converter seus dados adequadamente para o formato UTF-8 durante o processo de importação. Atualmente, só é possível importar dados que estejam nos formatos ISO-8859-1 ou UTF-8. Ao especificar a codificação de caracteres dos seus dados, considere o seguinte:

  • Se você não especificar uma codificação ou se especificar explicitamente que os dados estão no formato UTF-8, mas fornecer um arquivo CSV que não esteja no formato UTF-8, o BigQuery tentará converter o arquivo CSV para UTF-8.

    Geralmente, seus dados são importados com sucesso, mas podem não corresponder byte por byte àquilo que você espera. Para evitar isso, especifique a codificação correta e execute o processo de importação novamente.

  • Os delimitadores precisam estar no formato ISO-8859-1.

    Normalmente, é uma prática recomendada usar um delimitador padrão, como tabulação, barra vertical ou vírgula.

  • Se o BigQuery não conseguir converter um caractere, ele será convertido neste caractere de substituição Unicode padrão: �.
  • Os arquivos JSON precisam estar no formato UTF-8 sempre.

Se você planeja carregar dados simples codificados no formato ISO-8859-1 usando a API, especifique a property encoding na configuração do job de load.

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.

Detecção automática de esquema

A detecção automática de esquema está disponível ao carregar dados no BigQuery e ao fazer consultas em uma fonte de dados externa.

Quando a detecção automática está ativada, o BigQuery inicia o processo de inferência selecionando um arquivo aleatório na fonte de dados e verificando até 100 linhas de dados para usar como uma amostra representativa. Em seguida, o BigQuery examina cada campo e tenta atribuir um tipo de dados a cada campo com base nos valores contidos na amostra.

Use a detecção automática de esquema ao carregar arquivos JSON ou CSV. A detecção automática de esquema não está disponível para arquivos Avro, ORC e Parquet ou para exportações do Datastore ou do Firestore, porque as informações de esquema são autoexplicativas para esses formatos.

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.

Cloud Storage

O BigQuery é compatível com o carregamento de dados do Cloud Storage. Para mais informações, consulte Como carregar dados do Cloud Storage.

Datastore

O BigQuery é compatível com o carregamento de dados das exportações do Datastore. Para mais informações, consulte Como carregar dados das exportações do Datastore.

Firestore

O BigQuery é compatível com o carregamento de dados das exportações do Firestore. Para mais informações, consulte Como carregar dados das exportações do Firestore.

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