Como calcular datas no GoodData

Estamos usando uma métrica para calcular o Lead Time (dias corridos) entre uma Data de Início e uma Data de Fim.

Atualmente, o cálculo padrão de diferença entre datas (ex: Data Fim - Data Início) retorna uma contagem exclusiva:

05/03/2025 a 06/03/2025 resulta em 1 dia.

No entanto, o requisito é que a contagem seja inclusiva(considerando o dia de início e o dia de fim):

05/03/2025 a 06/03/2025 deve resultar em 2 dias.

Qual é a sintaxe ou a melhor prática para modificar a fórmula da métrica?

Boa tarde Felipe!

1. O que é Aritmética de Atributos de Data?

A Aritmética de Atributos de Data, no contexto do MAQL, refere-se à capacidade de manipular e calcular valores usando atributos de tempo (datas) definidos no seu Modelo Lógico de Dados (LDM) do GoodData.

Em vez de tratar as datas apenas como filtros estáticos, esta técnica permite que você as utilize como operandos em expressões matemáticas para gerar novas métricas e insights temporais.


2. Casos de Uso Principais

A aplicação dessa aritmética é crucial para medir a eficiência de processos e analisar o comportamento de dados ao longo do tempo.

Caso de Uso Descrição Exemplo de Aplicação
Cálculo de Duração (Lead Time) Medir o tempo decorrido entre dois eventos distintos. Calcular o número de dias que um ticket levou para ser resolvido (Data de Resolução - Data de Criação).
Encontrar Datas Mínimas/Máximas Identificar a primeira ou a última data de um evento em um conjunto de dados. Encontrar a primeira data de compra de um cliente para calcular seu tempo de vida (Lifetime).
Comparação Período a Período (PoP) Comparar métricas com base em períodos de tempo relativos (anterior, próximo). Analisar as vendas do Mês Atual versus o Mês Anterior ou a Mesma Semana do Ano Passado.
Geração de Cohorts Agrupar usuários ou eventos com base em uma data de início comum (e.g., o mês em que se registraram). Rastrear o desempenho de clientes que fizeram sua primeira compra em Janeiro ao longo dos meses seguintes.

3. Conceitos Chave no MAQL

Para realizar a aritmética de datas, o MAQL se apoia em três componentes principais:

3.1. Atributos de Data (Date Attributes)

No GoodData, cada coluna de data em seu modelo é mapeada para uma Dimensão de Data no LDM. Essa dimensão gera atributos de data em diversas granularidades (Dia, Semana, Mês, Ano).

  • Identificação: Os atributos de data são frequentemente referenciados na sintaxe MAQL usando a notação {attr.dataset.date_attribute}.
  • Exemplo: Se você tem uma coluna de data chamada Resolution Date, o atributo de dia pode ser referenciado como {attr.resolution_date.day}.

3.2. O Operador de Subtração (-)

O operador de subtração é o método mais direto para realizar a aritmética de datas, especificamente para calcular a diferença (duração).

Quando você subtrai um atributo de data mais antigo de um mais recente, o resultado é um valor numérico que representa a diferença em unidades de tempo (geralmente dias ou a granularidade do atributo).

Exemplo de Cálculo de Duração (Lead Time):

Para criar uma métrica que calcula o número de dias para resolver um ticket:

Snippet de código

SELECT ({attr.ticket_resolved_date} - {attr.ticket_created_date})

A métrica resultante agregará essa diferença, normalmente exigindo uma função como AVG (Média) ou MAX (Máximo) aplicada a este cálculo.

3.3. Funções de Data Específicas

Embora a diferença direta seja um cálculo aritmético, outras funções MAQL ajudam a encontrar datas extremas ou a consolidar a agregação temporal:

  • MIN e MAX: Usadas para encontrar a menor e a maior data de ocorrência de um evento, conforme o caso de uso de “Encontrar Datas Mínimas/Máximas”.Snippet de código
SELECT MIN({attr.order_date}) BY {attr.customer_id}

(Esta métrica retorna a data da primeira compra para cada cliente).

3.4. Transformações de Tempo (Time Transformations)

Embora não sejam puramente “aritméticas”, as Transformações de Tempo (ou Time Over Time) são inseparáveis da manipulação de datas no MAQL. Elas permitem que uma métrica seja calculada para um período de tempo relativo ao período atual do relatório.

As mais comuns são:

Macro Função Exemplo
FOR Previous Desloca a métrica para o período anterior (dia, mês, ano, etc.). SELECT SUM({m.sales}) FOR Previous({date.month}) (Vendas do Mês Anterior)
FOR Next Desloca a métrica para o próximo período. SELECT SUM({m.sales}) FOR Next({date.month}) (Vendas do Próximo Mês)
THIS Filtra o resultado para o período de tempo atual. SELECT SUM({m.sales}) WHERE {date.year} = THIS (Vendas do Ano Atual)
PREVIOUS Filtra o resultado para o período de tempo imediatamente anterior. SELECT SUM({m.sales}) WHERE {date.year} = PREVIOUS (Vendas do Ano Anterior)

O uso dessas transformações, em combinação com a aritmética de subtração, permite a construção de métricas robustas para a análise temporal no GoodData.

Obrigado por entrar em contato conosco.