Pular para conteúdo

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

  1. Função CALENDAR Dinâmica: Gera uma sequência ininterrupta de datas entre o primeiro e o último registro de vendas da base.
  2. Adição de Colunas Analíticas: ADDCOLUMNS enriquece o calendário com atributos necessários para filtros visuais de fatiadores (Slicers).
  3. Habilitação de Time Intelligence: Permite que funções como SAMEPERIODLASTYEAR e DATESYTD operem com precisão matemática.

🎯 3. Próximos Passos & Sequência Didática