(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

DP-600: projetar e optimizar hierarquias de data em modelos semânticos

João Barros 10 de September de 2026 4 min de leitura

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.

  1. 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).

  2. 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.

  3. 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.

  4. 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
  5. 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.