DP-600: implementar tabelas de ponte (bridge tables) em modelos semânticos
Vou ensinar como implementar e usar tabelas de ponte (bridge tables) num modelo semântico — competência útil no DP-600 e crucial para modelos que têm relacionamentos muitos‑para‑muitos, dimensionamento de atributos ou historização. Saber quando e como usar uma bridge table ajuda a garantir medidas correctas e desempenho aceitável em Power BI/Fabric.
O que precisas de saber
Uma tabela de ponte (bridge table) é uma tabela intermédia que normaliza ou resolve relacionamentos complexos entre tabelas fact e dimension. Serve, por exemplo, quando uma entidade tem múltiplas categorias atribuídas (tags), ou quando tens várias chaves naturais que ligam dimensões duplicadas. Em vez de criar relações directas muitos‑para‑muitos entre fact e dimension, colocas uma bridge que contém pares chave_fact–chave_dim e, opcionalmente, uma granularidade ou peso.
Exemplo simples: tens uma tabela Sales com SalesID e ProductID, e uma tabela Product com ProductID e Category. Mas um produto pode pertencer a várias Category (por exemplo, tags como "Eco", "Premium"). Em vez de armazenar todas as categorias na tabela Product como lista, crias ProductCategory (ProductID, CategoryID) — a bridge — e ligas Sales → Product (1:N) e ProductCategory → Category (N:1). Para agregações por Category, passas por ProductCategory.
Como funciona na prática
Passo a passo para criar e usar uma bridge table de forma correcta:
- Modelação inicial: Identifica as entidades e o tipo de relacionamento (1:1, 1:N, N:N). Se houver N:N entre fact e dimensão, considera uma bridge.
- Projectar a bridge: Cria uma tabela com as chaves que ligam as duas entidades (ex.: ProductID, CategoryID). Inclui metadados se necessário (ex.: weight, EffectiveFrom, EffectiveTo).
- Definir relações: No modelo semântico, estabelece relações 1:N entre as tabelas apropriadas. Evita relações directas N:N; usa a bridge para encaminhar a filtragem.
- Medidas correctas: As medidas precisam de trabalhar através da bridge. Normalmente usas funções DAX que respeitam relações (ex.: SUM, CALCULATE) mas, se houver ambiguidade, usa funções como RELATEDTABLE, CROSSFILTER ou TREATAS.
- Performance e filtragem: Avalia a cardinalidade da bridge — se for muito grande, adiciona pré‑agregações ou índices na origem. Considera também Storage Mode e partições.
Exemplo DAX típico (cenário: contar vendas por Category quando existe ProductCategory bridge):
SalesByCategory =
CALCULATE(
COUNTROWS(Sales),
CROSSFILTER(Sales[ProductID], Product[ProductID], Both),
VALUES(Category[CategoryID])
)
Uma alternativa é usar TREATAS para aplicar um filtro a partir de uma tabela derivada da bridge:
SalesByCategory2 =
CALCULATE(
COUNTROWS(Sales),
TREATAS(VALUES(ProductCategory[ProductID]), Sales[ProductID])
)
Erros comuns
- Ligações directas N:N sem bridge: Criar relações directas muitos‑para‑muitos pode levar a resultados incorrectos e ambiguidade de filtragem. Usa a bridge para modelar explicitamente o relacionamento.
- Ignorar granularidade: Se a bridge não incluir informação de período (EffectiveFrom/To) podes contaminar agregados temporais. Para dados historizados, adiciona colunas de validade e filtra/agrupa conforme necessário.
- Medidas que não consideram a bridge: Escrever medidas simples que assumem relação directa entre fact e dimensão leva a contagens duplicadas ou omitidas. Testa medidas com contextos de filtro variados e utiliza CROSSFILTER/TREATAS quando preciso.
Como praticar
Para praticar, constrói um modelo pequeno com estas tabelas: Sales (SalesID, ProductID, Amount, Date), Product (ProductID, Name), Category (CategoryID, Name) e ProductCategory (ProductID, CategoryID). Importa dados de exemplo CSV e implementa relações no Power BI Desktop ou no Fabric Model. Cria medidas: total de vendas por categoria, média por categoria ponderada por peso, e análises temporais com a bridge.
Refere-te sempre aos recursos oficiais: o Practice Assessment OFICIAL da Microsoft (gratuito) e a Study Guide oficial do DP-600 (gratuita). Usa o Practice Assessment para avaliar o teu nível e a Study Guide para cobrir todas as "skills measured". Não uses exam dumps — pratica com labs e os materiais oficiais.
Em resumo
- Uma bridge table resolve relacionamentos complexos e evita relações N:N directas no modelo semântico.
- Projecta a bridge com as chaves e metadados essenciais (p.ex. peso, validade) para manter a granularidade correcta.
- Escreve medidas DAX que respeitem a filtragem através da bridge; utiliza CROSSFILTER ou TREATAS quando necessário.
- Testa e optimiza: valida resultados com cenários de filtragem diferentes e considera o impacto na performance.