DP-600: projetar e optimizar hierarquias de data em modelos semânticos
Vou ensinar a competência de projetar e optimizar hierarquias de data em modelos semânticos — uma aptidão essencial no DP-600. Saber estruturar uma dimensão de data correctamente melhora o desempenho, facilita a análise temporal e evita erros nas funções de time intelligence.
O que precisas de saber
Uma hierarquia de data típica agrega níveis como Ano > Trimestre > Mês > Dia. Nos modelos semânticos (Tabular/Power BI/Fabric), uma dimensão de data bem construída permite usar funções de time intelligence (TOTALYTD, DATESINPERIOD, etc.) e optimizar filtros e agrupamentos. Conceptos chave:
- Tabela de datas dedicada: não uses uma coluna de data dentro da fact table; cria uma calendar table com uma linha por dia e chaves inteiras.
- Chave de ligação: relaciona a fact table à tabela de datas por uma coluna inteira (por ex., YYYYMMDD) ou por um tipo date, dependendo do storage mode.
- Colunas de suporte: Ano, Trimestre (nome e número), Mês (nome e número), Dia da semana (nome e número), AnoFiscal, e um indicador de AnoCompleto (para filtros).
- Hierarquias físicas: define a hierarquia no modelo (Ano > Trimestre > Mês > Dia) para permitir drill-down eficiente nos relatórios.
Exemplo simples de colunas numa calendar table:
DateKey (int) = 20260910
Date (date) = 2026-09-10
Year = 2026
Quarter = 3
MonthNumber = 9
MonthName = "September"
Day = 10
IsInFullYear = TRUE
Na prática — passo a passo
Aqui tens um fluxo prático para criar e optimizar a tua hierarquia de data no Power BI Desktop ou no semantic model do Fabric.
-
Criar a calendar table
Gera a tabela com todas as datas que cobrem o intervalo dos teus dados (ex.: desde a menor InvoiceDate até à maior). Em DAX podes usar:
Calendar = CALENDAR(MIN(Sales[OrderDate]), MAX(Sales[OrderDate]))Mas, para melhor performance, é preferível criar também a DateKey inteira e colunas numéricas para ordenar (MonthNumber, QuarterNumber).
-
Adicionar colunas de suporte
Cria colunas calculadas (ou preferencialmente, na origem/ETL quando possível) para evitar cálculos em runtime dispendiosos. Exemplos em DAX:
Year = YEAR(Calendar[Date]) MonthNumber = MONTH(Calendar[Date]) MonthName = FORMAT(Calendar[Date], "MMMM") Quarter = "Q" & FORMAT(QUARTER(Calendar[Date]), "0") DateKey = VALUE(FORMAT(Calendar[Date], "YYYYMMDD"))Preferível: gerar estas colunas durante o ETL (Synapse, Dataflow) para reduzir a carga no modelo.
-
Criar hierarquia no modelo
No Power BI Desktop ou no Model Designer do Fabric, selecciona a tabela de datas e cria uma hierarquia arrastando as colunas pela ordem desejada (Year > Quarter > MonthName > Date). Isto melhora a experiência de drill-down e permite usar automaticamente níveis nos visuais.
-
Ordenação correcta das colunas de texto
Garante que MonthName é ordenado por MonthNumber; Quarter por QuarterNumber. Sem isto, janeiro pode aparecer depois de setembro nos relatórios.
Na view do modelo: seleccionar MonthName -> Sort by Column -> MonthNumber -
Relacionamentos e activação de time intelligence
Cria um relacionamento 1:* entre a tabela Date (DateKey ou Date) e a fact table. Marca a tabela de datas como "Date Table" (Mark as Date Table) e define a coluna de data primária. Isso permite que o DAX use correctamente funções de time intelligence.
Erros comuns
- Usar a coluna de data da fact table como dimensão — causa duplicação, dificuldades com múltiplas fact tables e limita a reutilização da calendar table.
- Esquecer de ordenar colunas de texto — MonthName mostrado por ordem alfabética conduz a relatórios confusos.
- Calcular demasiadas colunas no modelo — criar colunas caras em DAX em vez de no ETL afecta o tempo de processamento e o tamanho do modelo.
Como praticar
Para praticar, cria um pequeno projecto: carrega uma fact table de vendas, constrói a calendar table com 5 anos de dados, implementa a hierarquia e testa medidas de time intelligence (YTD, MTD, MoM). Usa o Practice Assessment OFICIAL e GRATUITO da Microsoft para avaliar conhecimentos gerais do DP-600; consulta também a study guide oficial (ambos gratuitos). Estas ferramentas oficiais são as únicas válidas para simulados oficiais — não uses "dumps".
Em resumo
- Cria sempre uma tabela de datas dedicada e relaciona-a correctamente com as fact tables.
- Adiciona colunas numéricas para ordenar e desloca a lógica para o ETL quando possível, reduzindo o processamento no modelo.
- Define hierarquias físicas (Year > Quarter > Month > Day) para melhor experiência de análise e performance.
- Marca a tabela como Date Table para habilitar funções de time intelligence e evitar erros nas medidas temporais.