Como criar um gráfico de séries temporais com linhas de tendência em Power BI
Este tutorial mostra como criar um gráfico de séries temporais em Power BI com linhas de tendência e uma previsão simples. É útil para analisar a evolução de vendas, visitas ou métricas ao longo do tempo e identificar padrões e desvios.
Pré-requisitos
- Power BI Desktop instalado.
- Uma tabela com colunas de Data e Valor (ex.: Date, Sales).
- Noções básicas de modelação (relacionamentos) e DAX.
Passo 1: Preparar a tabela de datas
Uma tabela de datas (Calendar) é essencial para séries temporais: permite agrupar por mês, trimestre e usar funções de time intelligence correctamente.
// Exemplo DAX para criar uma Calendar table Calendar = ADDCOLUMNS ( CALENDAR (DATE(2020,1,1), DATE(2024,12,31)), "Year", YEAR([Date]), "MonthNumber", MONTH([Date]), "MonthName", FORMAT([Date], "MMMM"), "YearMonth", FORMAT([Date], "YYYY-MM") )
Depois de criar a tabela, marca-a como "Date table" em Modelagem e assegura que a coluna Date é a coluna de data.
Passo 2: Relacionar a Calendar com os dados
Cria um relacionamento entre Calendar[Date] e a tua tabela de factos (ex.: Sales[Date]). Usa relação 1:* com a Calendar no lado 1.
Passo 3: Criar medidas básicas
Cria medidas para totalizar o valor e para comparar com períodos anteriores. As medidas são essenciais para linhas de tendência e forecast simples.
// Medida total Total Sales = SUM(Sales[Amount]) // Medida - vendas no período anterior Sales Prev Period = CALCULATE([Total Sales], DATEADD(Calendar[Date], -1, YEAR))
Passo 4: Criar o gráfico de linhas
Adiciona um Visual de Line chart. Coloca Calendar[Date] no eixo X e a medida Total Sales nos valores. Configura o eixo para mostrar data contínua (Type: Continuous) se quiseres linhas suaves.
Passo 5: Adicionar uma linha de tendência com uma medida DAX
Para teres controlo e explicitar a linha de tendência, calcula uma tendência linear via regressão simples (coeficiente e intercepto por DAX) e desenha‑a como série adicional.
// Exemplo de tendência linear (mínimo viável) Trend_Slope = VAR X = AVERAGEX(VALUES(Calendar[Date]), VALUE(FORMAT(Calendar[Date], "YYYYMM"))) VAR Y = AVERAGEX(VALUES(Calendar[Date]), [Total Sales]) VAR XY = AVERAGEX(VALUES(Calendar[Date]), VALUE(FORMAT(Calendar[Date], "YYYYMM")) * [Total Sales]) VAR XX = AVERAGEX(VALUES(Calendar[Date]), VALUE(FORMAT(Calendar[Date], "YYYYMM")) * VALUE(FORMAT(Calendar[Date], "YYYYMM"))) VAR N = COUNTROWS(VALUES(Calendar[Date])) RETURN DIVIDE(XY - N * X * Y, XX - N * X * X) Trend_Intercept = VAR X = AVERAGEX(VALUES(Calendar[Date]), VALUE(FORMAT(Calendar[Date], "YYYYMM"))) VAR Y = AVERAGEX(VALUES(Calendar[Date]), [Total Sales]) VAR Slope = [Trend_Slope] RETURN Y - Slope * X Trend Line = VAR CurrX = VALUE(FORMAT(MAX(Calendar[Date]), "YYYYMM")) RETURN [Trend_Intercept] + [Trend_Slope] * CurrX
Nota: este exemplo usa YYYYMM como representação numérica do tempo para regressão simples. Para intervalos diferentes ajusta a transformação de X.
Passo 6: Mostrar a linha de tendência no gráfico
Adiciona a medida Trend Line ao mesmo Line chart como série adicional. Vais ver a linha que representa a tendência linear ao longo do tempo. Se preferires, converte o eixo para Type: Continuous para uma aparência mais natural.
Passo 7: Criar uma previsão simples (forecast)
Podes estender a tendência para prever valores futuros. Cria uma tabela auxiliar com datas futuras e usa a mesma fórmula de Trend Line para calcular estimativas.
// Tabela de datas futuras (exemplo 6 meses) FutureCalendar = CALENDAR (MAX(Calendar[Date]) + 1, EDATE(MAX(Calendar[Date]), 6)) // Medida para forecast em contexto de FutureCalendar Forecast Value = VAR CurrX = VALUE(FORMAT(MAX(FutureCalendar[Date]), "YYYYMM")) RETURN [Trend_Intercept] + [Trend_Slope] * CurrX
Combina a Calendar normal e a FutureCalendar numa visualização combinada ou usa um Line chart que aceite ambas as séries (podes juntar as tabelas com UNION se necessário).
Verificar o resultado
Confirma que o gráfico mostra a série original e a linha de tendência. Verifica datas com valores nulos, pontos outliers e se a linha de tendência segue a direcção esperada. Erros comuns: não marcar a tabela de datas, uso de eixo discreto em vez de contínuo, e agregações ao nível errado (usar Date vs YearMonth).
Conclusão
Agora tens um gráfico de séries temporais com linha de tendência e uma previsão simples em Power BI. Próximos passos: experimentar suavização (moving average), usar R ou Python para forecast avançado, ou optimizar a regressão para frequências distintas. Dica: testa os resultados com holdout (separa alguns meses para validar a previsão).