- Data Hackers Newsletter
- Posts
- Funções de data no Amazon Redshift: um guia prático
Funções de data no Amazon Redshift: um guia prático
Aprenda a usar diferentes funções de data no Amazon Redshift, incluindo DATEDIFF e DATEADD, para otimizar suas análises.
Se você trabalha com análise de dados, entender as funções de data no Amazon Redshift pode ser a chave para otimizar suas consultas e extrair insights valiosos de seus dados. Neste guia prático, exploraremos funções como DATEDIFF e DATEADD, que permitem calcular diferenças entre datas, adicionar intervalos e manusear cronologias de maneira eficiente, tornando suas análises mais flexíveis e precisas.
Aprender a sintaxe e conhecer exemplos práticos dessas funções pode transformar a maneira como você aborda análises complexas e interpreta dados temporais, permitindo um acompanhamento mais eficaz de tendências e padrões em seus projetos.
Introdução às funções de data no Amazon Redshift
As funções de data no Amazon Redshift são ferramentas essenciais para a manipulação e análise de informações relacionadas a datas e horários. Elas possibilitam que os usuários realizem operações como cálculos, comparações e extrações de partes específicas de datas e timestamps.
Entre as principais funções de data, podemos destacar:
ADD_MONTHS: Adiciona um número de meses a uma data ou timestamp.
DATEDIFF: Calcula a diferença entre duas datas ou horários, retornando o valor em unidades específicas, como dias ou meses.
CURRENT_DATE: Retorna a data atual, mantendo as análises atualizadas.
EXTRACT: Extrai partes específicas de uma data ou hora, como o dia, mês ou ano.
Essas funções melhoram a flexibilidade das análises, permitindo cálculos de intervalos entre eventos, identificação de datas ou ocasiões específicas, e a monitorização de tendências ao longo do tempo.
É importante mencionar que algumas funções como AGE e NOW foram depreciadas, sugerindo o uso de alternativas mais eficazes como DATEDIFF ou GETDATE.
A habilidade de manipular dados temporais de forma precisa é vital para qualquer profissional que deseja extrair insights valiosos.

O Amazon Redshift é de grande valia na análise de dados, e conhecer suas funções faz toda a diferença
Uso da função DATEDIFF: como calcular diferenças entre datas
A função DATEDIFF no Amazon Redshift é uma ferramenta poderosa para calcular a diferença entre partes específicas de duas expressões de data ou hora. Compreender como utilizá-la pode otimizar sua análise de dados e facilitar a tomada de decisões baseadas no tempo.
Sintaxe e Argumentos
A sintaxe básica para utilizar a função é a seguinte:
DATEDIFF(datepart, {date|time|timetz|timestamp}, {date|time|timetz|timestamp})
datepart: Especifica a parte da data ou hora a ser utilizada na operação (ano, mês, dia, hora, minuto, segundo, milissegundo, ou microsegundo).
{date|time|timetz|timestamp}: Representa colunas ou expressões que contenham valores desses tipos. Ambas as expressões devem incluir a parte especificada.
Tipo de Retorno
O retorno da função DATEDIFF é do tipo BIGINT, que representa a diferença calculada.
Exemplos de Uso
Diferença em semanas entre duas datas literais:
SELECT DATEDIFF(week, '2009-01-01', '2009-12-31') AS numweeks;
Resultado: 52
Diferença em horas entre duas datas literais:
SELECT DATEDIFF(hour, '2023-01-01', '2023-01-03 05:04:03') AS date_diff;
Resultado: 53
Diferença em dias entre duas datas TIMESTAMETZ:
SELECT DATEDIFF(days, 'Jun 1, 2008 09:59:59 EST', 'Jul 4, 2008 09:59:59 EST') AS date_diff;
Resultado: 33
Diferença em dias entre duas colunas em uma tabela:
SELECT DATEDIFF(day, start_date, end_date) AS duration FROM date_table;
Resultado:
duration --------- 81 486
Diferença em trimestres desde uma data passada até a data atual:
SELECT DATEDIFF(qtr, '1998-07-01', current_date) AS date_diff;
Resultado: 40
Exemplo de união de tabelas para calcular a espera em dias entre listagem e venda de ingressos:
SELECT priceperticket, DATEDIFF(day, listtime, saletime) AS wait FROM sales, listing WHERE sales.listid = listing.listid AND sales.listid BETWEEN 1000 AND 1005 ORDER BY wait DESC, priceperticket DESC;
Cálculo da média de horas que os vendedores aguardaram para vendas de ingressos:
SELECT AVG(DATEDIFF(hours, listtime, saletime)) AS avgwait FROM sales, listing WHERE sales.listid = listing.listid;
Resultado: 465
Exemplos com TIME e TIMETZ
Diferença em horas entre valores da coluna do tipo TIME:
SELECT DATEDIFF(hour, time_val, time '15:24:45') FROM time_test;
Diferença em horas entre valores TIMETZ:
SELECT DATEDIFF(hours, timetz '20:00:00 PST', timetz_val) AS numhours FROM timetz_test;
Estes exemplos mostram como a função DATEDIFF pode ser aplicada em diversas situações para calcular diferenças de datas e tempos no Amazon Redshift.
Aplicação da função DATEADD: como adicionar intervalos de tempo a datas
A função DATEADD no Amazon Redshift é essencial para adicionar intervalos a valores de DATE, TIME, TIMETZ ou TIMESTAMP. Essa função é frequentemente necessária ao trabalhar com análises de dados.
Sintaxe e Argumentos
A sintaxe da função DATEADD é a seguinte:
DATEADD(datepart, interval, {date|time|timetz|timestamp})
datepart: Indica a parte da data que deseja modificar (ano, mês, dia ou hora).
interval: Um número inteiro que especifica o intervalo a ser adicionado. Um valor negativo pode ser utilizado para subtrair.
date|time|timetz|timestamp: A coluna ou expressão que contém a parte da data a ser alterada.
Tipo de Retorno
O tipo de retorno desta função será TIMESTAMP, TIME ou TIMETZ, dependendo do tipo de dado de entrada.
Exemplos de uso
Adicionar 30 dias a uma data em uma tabela:
SELECT dateadd(day, 30, caldate) AS novplus30 FROM date WHERE month = 'NOV' ORDER BY dateid;
Resultado: Datas incrementadas em 30 dias.
Adicionar 18 meses a uma data literal:
SELECT dateadd(month, 18, '2008-02-28');
Resultado:
2009-08-28 00:00:00
Adicionar 5 minutos a cada valor em uma coluna TIME:
SELECT dateadd(minute, 5, time_val) AS minplus5 FROM time_test;
Resultado: Coluna com valores incrementados em 5 minutos.
Adicionar 2 horas a um valor TIMESTAMPTZ:
SELECT dateadd(hour, 2, timetz '13:24:55 PST');
Resultado:
23:24:55+00
Esses exemplos demonstram a flexibilidade e a utilidade da função DATEADD para manipulação de datas e horários no Amazon Redshift.
Exemplos práticos: funções de data em ações do dia a dia
Entender como aplicar as funções de data no Amazon Redshift pode aprimorar significativamente suas análises. Aqui estão alguns exemplos práticos de uso:
Cálculo de idades: Usando a função
DATEDIFF
, você pode calcular a idade de clientes com base nas suas datas de nascimento:SELECT nome, DATEDIFF(year, data_nascimento, CURRENT_DATE) AS idade FROM clientes;
Análise de vendas por tempo: Utilize
DATEADD
para gerar relatórios de vendas por períodos:SELECT produto, SUM(valor_venda) AS total_vendas FROM vendas WHERE data_venda BETWEEN CURRENT_DATE AND DATEADD(day, 30, CURRENT_DATE) GROUP BY produto;
Filtragem por datas: Encontre todas as transações realizadas no último mês:
SELECT * FROM transacoes WHERE data_transacao >= DATEADD(month, -1, CURRENT_DATE);
Comparação entre períodos: Compare as vendas do mês atual com o mês anterior usando
DATEDIFF
:SELECT COUNT(*) AS total_vendas, DATEDIFF(month, DATEADD(month, -1, CURRENT_DATE), CURRENT_DATE) AS meses_passados FROM vendas;
Agrupamento semanal: Para análise semanal, transforme suas datas em semanas e some os totais de vendas:
SELECT DATE_TRUNC('week', data_venda) AS semana, SUM(valor_venda) AS total_vendas FROM vendas GROUP BY semana ORDER BY semana DESC;
Esses exemplos práticos demonstram como as funções de data podem ser integradas em análises cotidianas em ambientes de dados, ajudando a estruturar consultas e relatórios valiosos.
Otimizando análises com funções de data no Amazon Redshift
Para otimizar análises usando funções de data no Amazon Redshift, considere as seguintes práticas:
Codificação correta de colunas: Utilize a codificação adequada para maximizar a eficiência de leitura, especialmente em tabelas grandes.
Definição de chaves de distribuição e classificação: Escolha chaves de distribuição que minimizem a transferência de dados durante joins e apresentem alta cardinalidade, utilizando chaves compostas em consultas com padrões conhecidos.
Estatísticas atualizadas: Mantenha as estatísticas das tabelas atualizadas com o comando
ANALYZE
.Uso de tabelas temporárias: Prefira a sintaxe
CREATE TABLE
ao invés deSELECT...INTO
para garantir a correta distribuição e codificação.Monitoramento e diagnóstico: Utilize a visualização
STL_ALERT_EVENT_LOG
para identificar e diagnosticar problemas de desempenho.Evitar consultas em disco: Aumente a memória alocada para as consultas quando necessário.
Carga de dados eficiente: Utilize o comando
COPY
para garantir que os arquivos sejam compactados.Escolha adequada de tipos de dados: Selecionar tipos de dados corretos ajuda a evitar desperdício de memória.
Compressão de colunas: O armazenamento colunar permite uma compressão eficiente, resultando em uma taxa de compressão 3 a 4 vezes maior que o arquivo original.
Chaves de ordenação (SORTKEY): Defina chaves de ordenação para facilitar processos de filtragem durante as análises.
Considerações finais
Vale a pena explorar as funções de data no Amazon Redshift, pois elas oferecem um grande potencial para otimizar suas análises. Neste guia, você aprendeu como usar ferramentas essenciais como DATEDIFF e DATEADD, e ainda conferiu exemplos práticos que demonstram sua aplicação no dia a dia da análise de dados.
Ademais, a correta implementação dessas funções poderá transformar suas consultas, proporcionando uma compreensão mais profunda das tendências temporais que estão por trás dos seus dados. Assim, ao dominar esses recursos, você se posiciona de forma mais eficaz para extrair insights valiosos e gerar relatórios que realmente podem fazer a diferença em suas estratégias de negócios.