Introdução ao carregamento de dados no BigQuery

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 você consulta os dados sem carregá-los. Em todas as outras situações, você precisa primeiro carregar os dados no BigQuery antes de executar as consultas.

É possível carregar dados:

No momento, o carregamento de dados no BigQuery a partir do Google Drive não é compatível. No entanto, é possível consultar dados no Google 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. Para 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 carregamento de dados é CSV. Para carregar os dados armazenados em um dos outros formatos compatíveis, especifique-o 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.

    CSV, JSON, Avro, Parquet e ORC são compatíveis com dados simples. Exportações JSON, Avro, Parquet, ORC e Cloud Firestore e exportações do Cloud Datastore também são compatíveis com dados em que houver campos aninhados e repetidos. Dados aninhados e repetidos são úteis para expressar hierarquia. Eles também reduzem a duplicação quando é feita a desnormalização dos 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. Como opção, se você tem arquivos CSV no formato ISO-8859-1, especifique a codificação de maneira explícita ao importar os dados. A conversão para o formato UTF-8 será feita no BigQuery durante o processo de importação. Atualmente, só é possível importar dados que estejam no formato ISO-8859-1 ou UTF-8. Quando especificar a codificação de caracteres dos 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, os dados serão importados com sucesso, mas talvez não correspondam byte a byte ao 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.

    Usar um delimitador padrão, como um tab, uma barra vertical ou uma vírgula é uma prática recomendada.

  • Se o BigQuery não consegue converter um caractere, ele é convertido para o caractere substituto padrão em formato Unicode: �.
  • Os arquivos JSON precisam estar no formato UTF-8 sempre.

Se você planeja carregar dados simples codificados ISO-8859-1 usando a API, especifique a propriedade encoding na configuração de job de carregamento.

Como carregar dados compactados e descompactados

O formato binário Avro é o formato preferencial para carregar dados compactados. O carregamento de dados Avro é mais rápido porque esses dados podem ser lidos em paralelo mesmo quando os blocos de dados são compactados.

O formato binário Parquet também é uma boa escolha, 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.

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.

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. Também é necessário observar 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 com gzip antes de carregá-los no Google Cloud Storage. Atualmente o gzip é o único tipo de compactação de arquivos compatível para o carregamento de dados no BigQuery. Se a velocidade de carregamento for importante para o aplicativo e você tiver muita largura de banda para carregar os dados, deixe os arquivos sem compactar.

Como fazer o carregamento de 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 elimina dados duplicados no armazenamento e fornece consistência quando atualizações regulares são feitas nos dados.

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. Os campos aninhados e repetidos podem manter relacionamentos sem impactar o desempenho na tentativa de preservar um esquema relacional (normalizado).

A economia de armazenamento com dados normalizados não chega a ser uma preocupação em 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.

Se você precisar manter relacionamentos enquanto desnormaliza os dados, use campos aninhados e repetidos em vez de achatar completamente os dados. Quando os dados relacionais estão completamente achatados, a comunicação de rede (embaralhamento) pode afetar negativamente o desempenho da consulta.

Por exemplo, desnormalizar um esquema de pedidos sem usar campos aninhados e repetidos pode exigir que você agrupe por um campo como order_id (quando há um relacionamento 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 podem não resultar em maior 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 de linha, mas não pode substituí-lo.

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

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

Para saber informações sobre como especificar campos aninhados e repetidos no seu esquema ao carregar dados, veja Como especificar campos aninhados e repetidos.

Detecção automática de esquema

A detecção automática de esquema está disponível no carregamento de dados no BigQuery e nas consultas a 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 exportações do Cloud Datastore, Cloud Firestore ou arquivos Avro, Parquet e ORC, porque as informações de esquema desses formatos são descritas por eles mesmos.

Como fazer o carregamento de 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 do Google:

Depois que você configura uma transferência de dados, os carregamentos de dados recorrentes do aplicativo de origem são programados e gerenciados automaticamente no BigQuery pelo serviço de transferência de dados do BigQuery.

Google Analytics 360

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

Para ver exemplos de consulta de dados do Google Analytics no BigQuery, consulte o manual do BigQuery na Ajuda do Google Analytics.

Cloud Storage

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

Cloud Datastore

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

Cloud Firestore

O BigQuery é compatível com o carregamentos de dados exportados do Cloud Firestore. Para mais informações, consulte Como fazer o carregamento de dados exportados do Cloud Firestore.

Google Cloud Dataflow

Com o Cloud Dataflow, é possível fazer o carregamento de dados diretamente no BigQuery. Para mais informações sobre como usar o Cloud Dataflow para ler e gravar no BigQuery, consulte E/S do BigQuery na documentação do Apache Beam.

Alternativas ao carregamento de dados

Você não precisa carregar os 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 saber mais informações, veja Conjuntos de dados públicos.
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 usá-lo para consultas, sem a necessidade de carregar os dados.
Fontes de dados externas
Ignore o processo de carregamento de dados criando uma tabela baseada em uma fonte de dados externa. Para saber informações sobre os benefícios e as limitações dessa abordagem, consulte fontes de dados externas.
Arquivos de registros do Stackdriver
O Stackdriver 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.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.