Tipos de Dados no BigQuery: Como Armazenar e Consultar Diferentes Tipos de Dados em SQL

Photo by fabio on Unsplash

Tipos de Dados no BigQuery: Como Armazenar e Consultar Diferentes Tipos de Dados em SQL

O BigQuery utiliza diferentes tipos de dados que permitem a organização e classificação dos dados para consultas mais eficientes. Segue os tipos de dados suportados:

Tipos de Dados Numéricos

Os tipos de dados numéricos são usados para armazenar valores numéricos. Os principais tipos de dados numéricos são:

  • INT64: um número inteiro de 64 bits, que pode ser positivo ou negativo.

  • FLOAT64: um número de ponto flutuante de 64 bits, que pode representar valores com decimais.

  • NUMERIC: um número decimal preciso, que pode ser usado para cálculos que requerem precisão.

Exemplo de consulta SQL utilizando o tipo de dados numéricos:

SELECT SUM(price) as total_price
FROM orders
WHERE customer_id = 12345;

Tipos de Dados de Data e Hora

Os tipos de dados de data e hora são usados para armazenar datas e horários. Os principais tipos de dados de data e hora são:

  • DATE: uma data no formato YYYY-MM-DD.

  • TIMESTAMP: um horário UTC com precisão de segundos.

  • DATETIME: um horário com precisão de microssegundos.

Exemplo de consulta SQL utilizando o tipo de dados de data e hora:

SELECT COUNT(*) as num_orders
FROM orders
WHERE DATE(order_date) = '2022-01-01';

Tipos de Dados Textuais

Os tipos de dados textuais são usados para armazenar texto. Os principais tipos de dados textuais são:

  • STRING: um texto com tamanho máximo de 2 GB.

  • BYTES: um valor de byte com tamanho máximo de 2 GB.

Exemplo de consulta SQL utilizando o tipo de dados textual:

SELECT COUNT(*) as num_customers
FROM customers
WHERE name LIKE '%John%';

Tipos de Dados Geográficos

Os tipos de dados geográficos são usados para armazenar informações de localização. Os principais tipos de dados geográficos são:

  • GEOGRAPHY: um ponto, linha ou polígono no formato WKT ou GeoJSON.

  • ST_GEOGPOINT: um ponto geográfico com coordenadas de latitude e longitude.

  • ST_GEOGPOLYGON: um polígono geográfico definido por uma lista de pontos.

Exemplo de consulta SQL utilizando o tipo de dados geográficos:

SELECT COUNT(*) as num_locations
FROM locations
WHERE ST_CONTAINS(region, ST_GEOGPOINT(-122.4194, 37.7749));

Tipos de Dados Estruturados: STRUCT

Os tipos de dados estruturados são usados para armazenar dados em uma estrutura hierárquica. Os principais tipos de dados estruturados são:

  • STRUCT: uma estrutura aninhada que pode conter campos com diferentes tipos de dados.

Suponha que você tem uma tabela no BigQuery que contém informações de clientes, incluindo nome, endereço e informações de contato. A tabela pode ser estruturada como uma lista de structs, com cada struct contendo informações sobre um único cliente:

CREATE TABLE customers (
  id INT64,
  name STRING,
  address STRUCT<street STRING, city STRING, state STRING, zip INT64>,
  contact STRUCT<phone STRING, email STRING>
);

Agora, para recuperar o endereço completo de um cliente específico, você pode usar o tipo de dados STRUCT em uma consulta SQL:

SELECT address.street, address.city, address.state, address.zip
FROM customers
WHERE id = 12345;

Nessa consulta, a estrutura "address" é um struct que contém informações sobre o endereço do cliente. A consulta seleciona o endereço completo do cliente com ID 12345, mostrando a rua, a cidade, o estado e o código postal.

Note que, para selecionar campos dentro de uma estrutura, é necessário especificar o nome da estrutura seguido do nome do campo, separados por um ponto. Isso permite selecionar campos específicos de um struct e criar consultas mais precisas e eficientes.

Tipo ARRAY

O tipo de dado ARRAY é usado para armazenar uma lista de valores do mesmo tipo em uma única coluna em uma tabela do BigQuery. Esses valores podem ser de qualquer tipo de dado suportado pela ferramenta , como números, strings, data/hora, geográficos, etc.

Ao armazenar dados em um array, é possível organizar as informações em uma única coluna e simplificar a estrutura da tabela, tornando mais fácil a consulta e análise dos dados. Com o tipo de dado ARRAY, é possível, por exemplo, armazenar todos os produtos comprados por um cliente em uma única linha da tabela.

Suponha que você tenha uma tabela no BigQuery que contém informações de pedidos de clientes, incluindo o ID do cliente e uma lista de produtos comprados. A tabela pode ser estruturada da seguinte maneira:

CREATE TABLE orders (
  id INT64,
  customer_id INT64,
  products ARRAY<STRUCT<product_name STRING, quantity INT64>>
);

Nessa estrutura, a coluna "products" é um array que contém informações sobre os produtos comprados pelo cliente em cada pedido. Para recuperar o número total de produtos comprados por um cliente específico, você pode usar o tipo de dados ARRAY em uma consulta SQL:

SELECT SUM(product.quantity) as total_quantity
FROM orders, UNNEST(products) as product
WHERE customer_id = 12345;

Nessa consulta, a função UNNEST é usada para desaninhar a estrutura de produtos, permitindo que cada linha da tabela corresponda a um único produto comprado pelo cliente. O resultado da consulta é o número total de produtos comprados pelo cliente com ID 12345.

O BigQuery é uma ferramenta poderosa para armazenar e consultar dados em nuvem, permitindo a análise de grandes volumes de dados em tempo real. Com uma variedade de tipos de dados disponíveis, é possível armazenar e classificar diferentes tipos de dados em uma estrutura hierárquica, o que pode facilitar o processo de consulta e análise de dados. Ao conhecer os tipos de dados disponíveis e como utilizá-los em suas consultas SQL, você poderá extrair informações valiosas de seus dados em menos tempo e com maior eficiência.