Aula 17 - Modelagem de Dados Avançada para Business Intelligence 📊
Objetivo Pedagógico
Objetivo: Arquitetura de Modelos de Dados Tabulares para Business Intelligence: Esquema Estrela, relacionamentos 1:N, direção de filtros cruzados e tabelas fato/dimensão.
📑 1. Fundamentos Teóricos & Análise Técnica
A modelagem de dados para Business Intelligence (BI) em ferramentas corporativas modernas (como Power BI, Analysis Services e DAX Engines) exige a transição de relatórios baseados em planilhas planas monolíticas para o Modelo Tabular Estruturado.
Princípios arquiteturais fundamentais: 1. Esquema Estrela (Star Schema) Rigoroso: É o padrão canônico otimizado para o motor colunar em memória (VertiPaq do Power BI). Ao contrário de esquemas floco de neve (Snowflake) ou tabelas únicas largas (Flat Tables), o Esquema Estrela minimiza relacionamentos e simplifica as expressões analíticas. 2. Direção do Filtro Cruzado (Cross-Filter Direction): A direção padrão de propagação de filtros deve ser sempre Única (Single), fluindo da tabela Dimensão (lado 1) para a tabela Fato (lado N). O uso indevido de filtros bidirecionais (Both) degrada a performance da memória e pode gerar ambiguidades no cálculo de métricas. 3. Tabela de Calendário Dedicada: Criação de uma tabela de datas contínua e sem lacunas, indispensável para habilitar os recursos de Inteligência Temporal (Time Intelligence).
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
DimCalendar["d_Calendario (Lado 1)<br>Data, Mês, Ano"] -->|Filtro Flui em Sentido Único| FactSales["f_Vendas (Lado N)<br>Métricas: Faturamento, Qtd"]
DimCustomer["d_Cliente (Lado 1)<br>Nome, Região"] -->|Filtro Flui em Sentido Único| FactSales
DimProduct["d_Produto (Lado 1)<br>Categoria, Custo"] -->|Filtro Flui em Sentido Único| FactSales
style FactSales fill:#fff3e0,stroke:#e65100,stroke-width:2px
style DimCalendar fill:#e1f5fe,stroke:#01579b
style DimCustomer fill:#e1f5fe,stroke:#01579b
style DimProduct fill:#e1f5fe,stroke:#01579b 🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Motor Colunar VertiPaq: Compressão de dados em colunas com codificação por dicionário (Dictionary Encoding) e RLE (Run-Length Encoding). - Separação Estrita de Fatos e Dimensões: Dimensões filtram; Fatos quantificam e agregam. - Eliminação de Relacionamentos N:N: Uso de tabelas ponte (Bridge Tables) normalizadas quando o relacionamento direto for inevitável. - Tabela de Métricas Desacoplada: Criação de uma tabela dedicada exclusivamente para abrigar medidas calculadas DAX organizadas em pastas.
🛠️ 2. Implementação Prática em Business Intelligence, Power BI e Tabular Modeling
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// calendar_table.dax (Criação de Tabela de Calendário Automática em DAX)
// Tabela Calculada para Inteligência Temporal em Power BI
d_Calendario =
VAR MinData = MIN(f_Vendas[Data_Venda])
VAR MaxData = MAX(f_Vendas[Data_Venda])
RETURN
ADDCOLUMNS(
CALENDAR(MinData, MaxData),
"Ano", YEAR([Date]),
"Mês Num", MONTH([Date]),
"Mês Nome", FORMAT([Date], "MMMM"),
"Ano-Mês", FORMAT([Date], "YYYY-MM"),
"Trimestre", "T" & FORMAT([Date], "Q"),
"Dia da Semana", FORMAT([Date], "dddd")
)
💡 Análise Passo a Passo do Código
- Função CALENDAR Dinâmica: Gera uma sequência ininterrupta de datas entre o primeiro e o último registro de vendas da base.
- Adição de Colunas Analíticas:
ADDCOLUMNSenriquece o calendário com atributos necessários para filtros visuais de fatiadores (Slicers). - Habilitação de Time Intelligence: Permite que funções como
SAMEPERIODLASTYEAReDATESYTDoperem com precisão matemática.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto