Apostila completa de Business Intelligence Corporativo
BI de verdade não é arrastar campos até sair um gráfico — é um modelo de dados correto, uma métrica única e confiável, uma visualização que responde à pergunta certa, e uma organização que de fato decide com base nela. Esta apostila cobre Power BI e Tableau lado a lado, da modelagem em estrela ao DAX, do design de dashboard à governança, à camada semântica moderna e à cultura de dados — com o olho no que empresas pedem em vagas de BI.
O que é BI e como se estrutura uma solução
Objetivo: entender o que BI entrega, como ele se diferencia de análise ad-hoc e de ciência de dados, e as camadas que toda solução de BI atravessa.
1.1 A definição prática
Business Intelligence é o conjunto de processos e ferramentas que transformam dados operacionais em informação organizada, confiável e acessível para apoiar decisões recorrentes do negócio. A palavra-chave é recorrente: BI serve as perguntas que se repetem toda semana ("como estão as vendas por região?", "qual a taxa de churn deste mês?") com um número em que todos confiam.
| Foco | Saída típica | |
|---|---|---|
| BI | Métricas conhecidas, monitoramento contínuo, "o que aconteceu" | Dashboards, relatórios, KPIs governados |
| Análise ad-hoc | Uma pergunta nova, pontual, "por que aconteceu" | Um estudo, um slide, uma consulta SQL |
| Ciência de dados | Previsão, causalidade, padrões escondidos, "o que vai acontecer / o que fazer" | Modelos, experimentos, recomendações |
Os três se alimentam: um dashboard de BI levanta uma pergunta → análise ad-hoc investiga → vira um modelo de DS → cujo resultado volta a um dashboard de BI. Boa parte do trabalho de BI corporativo é, na verdade, a fronteira entre BI e analytics engineering (modelagem e métricas).
1.2 O stack de uma solução de BI
FONTES INTEGRAÇÃO MODELO SEMÂNTICA APRESENTAÇÃO DISTRIBUIÇÃO
┌───────────┐ ┌────────────┐ ┌────────────┐ ┌─────────────┐ ┌────────────┐ ┌──────────────┐
ERP, CRM ──▶ ETL/ELT ──▶ star schema ──▶ medidas / ──▶ dashboards ──▶ workspaces,
planilhas (ver apost. (fato + métricas e relatórios apps, e-mail,
banco de prod. Eng. de Dados) dimensões) centralizadas Slack/Teams,
APIs SaaS (DAX / LookML) embedded
warehouse/lake + RLS
└───────────┘ └────────────┘ └────────────┘ └─────────────┘ └────────────┘ └──────────────┘
- Você pode pular etapas (conectar o Power BI direto numa planilha), mas soluções corporativas sérias têm todas — é o que dá confiabilidade e escala.
- A tendência moderna é empurrar a integração e a modelagem para o warehouse/lakehouse (ELT + dbt) e deixar a ferramenta de BI cuidar de semântica e apresentação. Ver apostila de Engenharia de Dados.
1.3 Self-service × BI governado
| Self-service | Governado (enterprise) |
|---|---|
| Analistas de área criam seus próprios relatórios rapidamente | Um time central mantém modelos e métricas certificadas |
| + Agilidade, autonomia, menos fila | + Consistência ("uma verdade"), confiança, segurança |
| − Proliferação de dashboards, métricas divergentes ("receita" com 5 valores) | − Mais lento para mudar; risco de virar gargalo |
O equilíbrio maduro: datasets/modelos governados e certificados pelo time central, sobre os quais as áreas fazem self-service de visualização. As métricas são únicas; a exploração é livre.
1.4 Os papéis
- BI Analyst: traduz perguntas de negócio em dashboards; conhece o domínio e a ferramenta.
- BI Developer: constrói e mantém os modelos, medidas, RLS, performance, deployment.
- Analytics Engineer: modela os dados no warehouse (dbt) que alimentam o BI.
- BI/Data Platform Admin: tenant, capacidade, licenças, gateways, políticas.
- Data Steward / dono de métrica: responde pela definição de cada KPI.
BI é uma das áreas de dados com mais vagas e menor barreira de entrada — muitas empresas rodam em Power BI/Tableau e precisam de gente que modele bem e comunique bem. Pergunta de abertura: "Qual a diferença entre BI e ciência de dados?" e "O que é self-service BI e quais os riscos?" (proliferação e métricas divergentes; mitigar com modelos certificados).
✏️ Exercício 1 — Classifique a demanda
Para cada pedido, diga se é trabalho de BI, análise ad-hoc ou ciência de dados: (a) "quero acompanhar a receita por produto todo dia"; (b) "por que as vendas do Sul caíram 12% em março?"; (c) "quais clientes têm mais chance de cancelar nos próximos 60 dias?"; (d) "preciso do mesmo relatório de estoque que a diretoria vê, mas filtrado pela minha filial".
Gabarito: (a) BI — métrica conhecida, recorrente, dashboard. (b) Análise ad-hoc — pergunta pontual de causa; pode começar explorando o dashboard de BI. (c) Ciência de dados — previsão. (d) BI — mesmo modelo governado, com row-level security pela filial do usuário.
As ferramentas: Power BI, Tableau, Looker, Metabase
Objetivo: conhecer a filosofia, os pontos fortes e o modelo de licenciamento das principais ferramentas, para escolher com critério e transferir conhecimento entre elas.
2.1 Comparativo
| Ferramenta | Filosofia | Força | Licenciamento (resumo) |
|---|---|---|---|
| Power BI (Microsoft) | Modelo de dados tabular no centro (motor VertiPaq) + DAX; forte integração com o ecossistema Microsoft/Fabric | Custo-benefício, modelagem robusta, base instalada gigante, governança madura | Pro por usuário (barato); Premium/Fabric por capacidade para escala e recursos avançados |
| Tableau (Salesforce) | Exploração visual primeiro; "converse com seus dados" arrastando; motor Hyper | Melhor experiência de análise visual exploratória, viz sofisticada, comunidade de design | Creator / Explorer / Viewer por usuário; historicamente mais caro que Power BI |
| Looker (Google) | BI como código: modelagem em LookML versionada em git; consulta o warehouse ao vivo | Camada semântica governada e reutilizável, "single source of truth" real, embedded analytics | Por plataforma + usuários; corporativo |
| Metabase | Simplicidade e self-service leve; open source | Rápido de subir, barato, bom para times pequenos e perguntas diretas | Open source (self-host) ou cloud pago; acessível |
| Outros | Qlik Sense (motor associativo), Sigma (planilha sobre warehouse), Superset (OSS), Mode (SQL-first) | — | — |
2.2 Como escolher
- Já é casa Microsoft / orçamento apertado / precisa de modelagem forte: Power BI.
- Análise visual exploratória é o coração do trabalho / cultura de "data viz": Tableau.
- Quer a métrica definida uma vez, versionada, consumida por vários BIs e apps: Looker ou uma camada semântica headless (Módulo 8).
- Time pequeno, perguntas diretas, quer algo de pé amanhã: Metabase.
- Já tem warehouse forte: qualquer uma em modo "live/DirectQuery" + modelagem no warehouse.
Trocar de ferramenta assusta menos do que parece: fato e dimensão, grão, medida vs coluna, contexto de filtro, import vs live, row-level security, princípios de visualização valem em todas. O que muda é a sintaxe (DAX vs LOD vs LookML) e a UI. Domine os conceitos e você é produtivo em qualquer uma em semanas.
Power BI domina as vagas em número absoluto (sobretudo fora de big tech); Tableau é forte em empresas com cultura de análise e em certos setores. Saber os dois conceitualmente e ter profundidade em um é a combinação ideal. Perguntas: "Power BI ou Tableau, e por quê?" (depende de ecossistema, orçamento e se o foco é modelagem ou exploração visual), "O que Looker faz de diferente?" (camada semântica como código, ao vivo sobre o warehouse).
✏️ Exercício 2 — Recomende a ferramenta
(a) Indústria com 2.000 funcionários, tudo em Microsoft 365, orçamento moderado, precisa de relatórios financeiros governados. (b) Consultoria de dados que entrega dashboards exploratórios sofisticados para clientes. (c) Startup de 30 pessoas que quer democratizar consultas simples ao banco. (d) Empresa com data warehouse maduro que quer a definição de "receita" única para BI, e-mails e um app embutido.
Gabarito: (a) Power BI — ecossistema Microsoft, custo, governança. (b) Tableau — exploração visual e viz sofisticada são o produto. (c) Metabase — barato, rápido, self-service leve. (d) Looker (ou camada semântica headless tipo Cube/dbt Semantic Layer + o BI de preferência) — a métrica definida uma vez e reutilizada.
Modelagem de dados para BI
Objetivo: montar o modelo em estrela que faz Power BI e Tableau performarem e fazerem sentido — grão, fato, dimensão, relacionamentos — e fugir da "tabelona única".
3.1 Por que não uma tabela gigante achatada
A tentação do iniciante: trazer uma única tabela enorme com tudo (a "flat table" / "big table") e arrastar campos. Problemas: explode em tamanho (repetição de todos os atributos em cada linha), filtros e totais ficam ambíguos, medidas de contagem distinta quebram, e a manutenção vira um inferno. A resposta é a modelagem dimensional (Kimball) — a mesma da apostila de Engenharia de Dados, aqui do ponto de vista do BI.
3.2 Star schema
- Tabela fato: os eventos mensuráveis (vendas, pedidos, tickets). Cada linha é uma ocorrência no grão definido. Colunas = chaves para as dimensões + métricas numéricas. Longa e estreita; cresce sem parar.
- Tabelas dimensão: o contexto descritivo pelo qual se fatia —
dCliente,dProduto,dCalendario,dLoja. Curtas e largas; mudam devagar; contêm os atributos textuais para filtrar e agrupar. - Relacionamentos: 1 (dimensão) para muitos (fato), com a dimensão "filtrando" o fato. Em Power BI, filtro flui do lado "1" para o lado "*" por padrão (single direction) — mantenha assim salvo necessidade real.
┌──────────────┐
│ dCalendario │
└──────┬───────┘
┌────────────┐ ┌────┴─────────┐ ┌──────────────┐
│ dCliente ├───┤ fVendas ├───┤ dProduto │
└────────────┘ │ grão: 1 linha│ └──────────────┘
│ por item de │
│ nota fiscal │
└────┬─────────┘
┌──────┴───────┐
│ dLoja │
└──────────────┘
3.3 O grão é a decisão nº 1
"Uma linha de fVendas = um item de uma nota fiscal." Tudo decorre disso: quais dimensões se ligam, quais métricas são aditivas, como os totais somam. Misturar grãos (algumas linhas por nota, outras por item) é o erro que corrompe qualquer dashboard depois — e é dificílimo de diagnosticar.
3.4 Star × snowflake, e a dimensão calendário
- Star (dimensões achatadas) > snowflake (dimensões normalizadas em sub-tabelas) para BI: menos relacionamentos, motor mais feliz, DAX mais simples. Normalize só se houver motivo forte.
- Sempre tenha uma tabela calendário dedicada (
dCalendario), contínua, marcada como tabela de datas, com colunas de ano, trimestre, mês, semana, dia útil, feriado. É o que faz "time intelligence" (YoY, MTD, YTD) funcionar. Nunca dependa da data solta na tabela fato. - Slowly Changing Dimensions (SCD): Tipo 1 sobrescreve (perde histórico); Tipo 2 cria linha nova com validade (preserva histórico — a venda de janeiro fica ligada ao vendedor/território de janeiro). Ver apostila de Engenharia de Dados.
3.5 Import × DirectQuery / Live
| Import (extração para o motor em memória) | DirectQuery / Live (consulta a fonte a cada interação) | |
|---|---|---|
| Performance | Rápida (VertiPaq/Hyper otimizados, compressão colunar) | Depende da fonte; pode ser lenta |
| Frescor do dado | Do último refresh (agendado) | Tempo real / quase |
| Volume | Limitado pela memória/capacidade | Escala com a fonte |
| Use quando | Padrão para a maioria — dado cabe e refresh periódico basta | Volume gigante, requisito de tempo real, ou política de não copiar o dado; modelos compostos misturam os dois |
Modelagem é o que separa o "usuário de BI" do "profissional de BI" e cai muito: "O que é um star schema e por que ele é melhor que uma tabela única?", "O que é o grão de uma tabela fato?", "Por que ter uma tabela calendário dedicada?", "Import ou DirectQuery, e quando cada um?", "O que é uma SCD Tipo 2?".
✏️ Exercício 3 — Modele
Uma rede de academias quer analisar check-ins: por unidade, por plano do aluno, por horário, por dia. Defina o grão, a tabela fato e 4 dimensões. Onde entra SCD Tipo 2?
Gabarito: Grão: "uma linha = um check-in de um aluno numa unidade num instante". Fato fCheckin com chaves (data_id, hora_id ou timestamp, aluno_id, unidade_id, plano_id) e métricas (contagem de check-in; opcional: duração da visita). Dimensões: dCalendario, dHora (faixas do dia), dAluno, dUnidade, dPlano. SCD Tipo 2 em dAluno para o plano/atributo que muda ao longo do tempo (se o aluno mudou de "Mensal" para "Anual" em maio, os check-ins de abril continuam atribuídos a "Mensal") — ou modelar plano_id direto no fato se o plano no momento do check-in for capturado na origem.
A linguagem analítica: DAX, LOD e a camada semântica
Objetivo: entender medida vs coluna, contexto de filtro/linha, as funções que importam em DAX, os equivalentes no Tableau, e a ideia de centralizar métricas.
4.1 Medida × coluna calculada
| Coluna calculada | Medida (measure) | |
|---|---|---|
| Quando é calculada | No refresh, linha a linha; ocupa memória | Na hora da consulta, agregando conforme o contexto do visual |
| Resultado | Um valor por linha da tabela | Um valor escalar que responde ao filtro/agrupamento atual |
| Use para | Atributo para filtrar/agrupar (ex.: faixa etária a partir da idade) | Todo número que você mostra: soma de vendas, %, média, YoY, ranking |
90% do que iniciantes fazem como coluna calculada deveria ser medida. Colunas calculadas incham o modelo, não respondem ao contexto do visual e prejudicam a compressão. Só use coluna calculada quando precisa do valor para filtrar, agrupar ou relacionar — nunca para "somar depois".
4.2 Contexto: o coração do DAX
- Contexto de linha (row context): "qual linha estou avaliando agora" — existe dentro de colunas calculadas e de iteradores (
SUMX,FILTER). - Contexto de filtro (filter context): "quais filtros estão ativos" — vem dos visuais, slicers, linhas/colunas da matriz, e de
CALCULATE. É o que faz a mesma medida[Total Vendas]mostrar um número por região numa tabela e outro no total. CALCULATEé a função central: modifica o contexto de filtro.CALCULATE([Total Vendas], dProduto[Categoria] = "Bebidas")ignora o filtro de categoria do visual e força "Bebidas".
// Medidas típicas de um modelo de vendas
Total Vendas = SUMX(fVendas, fVendas[Qtd] * fVendas[PrecoUnit])
Vendas Ano Anterior =
CALCULATE([Total Vendas], SAMEPERIODLASTYEAR(dCalendario[Data]))
Crescimento YoY % =
DIVIDE([Total Vendas] - [Vendas Ano Anterior], [Vendas Ano Anterior])
Vendas YTD =
TOTALYTD([Total Vendas], dCalendario[Data])
% do Total (Categoria) =
DIVIDE([Total Vendas],
CALCULATE([Total Vendas], ALL(dProduto[Categoria])))
Funções essenciais para conhecer: CALCULATE, FILTER, ALL/ALLEXCEPT/REMOVEFILTERS, SUMX/AVERAGEX (iteradores), DIVIDE, VAR (variáveis para legibilidade e performance), e a família de time intelligence (SAMEPERIODLASTYEAR, DATEADD, TOTALYTD, DATESINPERIOD).
4.3 O equivalente no Tableau
- Campos calculados simples (aritmética, lógica) ~ colunas/medidas básicas.
- Table calculations (running total, percent of total, rank, moving average) operam sobre o resultado já agregado no visual — dependem do "endereçamento e partição".
- LOD expressions (
{ FIXED [Cliente] : SUM([Vendas]) },INCLUDE,EXCLUDE) controlam em que granularidade a agregação acontece, independente do nível do visual — é o mecanismo que resolve os casos que em DAX você faria comCALCULATE/ALLEXCEPT. - Parâmetros e sets para interatividade e segmentação.
4.4 A camada semântica: métrica definida uma vez
O problema corporativo clássico: "receita" calculada de formas ligeiramente diferentes em 12 dashboards, e nas reuniões ninguém sabe qual número está certo. A solução é centralizar a definição das métricas:
- Power BI: um dataset compartilhado e certificado com as medidas oficiais; os relatórios se conectam a ele (thin reports), não recriam as medidas.
- Tableau: published data sources e Tableau Metrics; a definição vive no data source, não em cada pasta.
- Looker: LookML — as medidas são código versionado, reusadas por tudo.
- Headless (Módulo 8): dbt Semantic Layer / MetricFlow, Cube — a métrica definida uma vez e servida a qualquer ferramenta.
DAX é o filtro técnico de muitas vagas de Power BI: "Diferença entre medida e coluna calculada", "O que é contexto de filtro e o que CALCULATE faz?", "Escreva uma medida de crescimento YoY", "O que são LOD expressions no Tableau?", "Como você garante que 'receita' seja o mesmo número em toda a empresa?" (dataset/data source certificado; camada semântica).
✏️ Exercício 4 — Escreva as medidas
Num modelo de vendas com fVendas, dCalendario, dProduto: escreva (conceitualmente) (a) ticket médio por venda; (b) participação % de cada categoria no total geral, insensível ao filtro de categoria; (c) vendas dos últimos 3 meses móveis.
Gabarito: (a) Ticket Médio = DIVIDE([Total Vendas], DISTINCTCOUNT(fVendas[NotaFiscalID])). (b) % Categoria = DIVIDE([Total Vendas], CALCULATE([Total Vendas], ALL(dProduto[Categoria]))) — ALL remove o filtro de categoria no denominador. (c) Vendas 3M Móveis = CALCULATE([Total Vendas], DATESINPERIOD(dCalendario[Data], MAX(dCalendario[Data]), -3, MONTH)). Todas dependem de dCalendario marcada como tabela de datas.
Design de visualização e dashboards
Objetivo: escolher o gráfico certo, aplicar os princípios que tornam um dashboard legível e acionável, e evitar o anti-padrão do "relatório disfarçado de dashboard".
5.1 Escolha do gráfico pela pergunta
| Pergunta | Gráfico |
|---|---|
| Comparar valores entre categorias | Barra (horizontal se rótulos longos ou muitas categorias) |
| Evolução ao longo do tempo | Linha (área só se o volume acumulado importa) |
| Parte de um todo (poucas partes, um momento) | Barra empilhada 100% ou barra simples; pizza só com 2–3 fatias |
| Relação entre duas variáveis | Dispersão (scatter) |
| Distribuição | Histograma, box plot |
| Um número-chave | Card / KPI, com comparação (vs meta, vs período anterior) |
| Detalhe granular / auditoria | Tabela ou matriz |
| Densidade geográfica | Mapa (com moderação — muitas vezes uma barra por região comunica melhor) |
Pizza com muitas fatias, rosca 3D, gauge/velocímetro (ocupa muito para dizer pouco), eixo Y que não começa em zero em gráfico de barras, dois eixos Y com escalas diferentes (engana), e "gráfico de tudo" (10 séries numa linha só). Na dúvida, barra ou linha.
5.2 Princípios (o essencial de Tufte / Few)
- Maximize a razão dado/tinta: remova bordas, sombras, grades pesadas, fundos, gradientes, ícones decorativos. Cada pixel deve informar.
- Cor com propósito: uma paleta neutra + uma cor de destaque para o que importa. Nunca "arco-íris". Garanta contraste e não dependa só de cor (daltonismo) — use rótulo, posição, forma.
- Ordene com significado: barras por valor (não alfabético), a menos que a categoria tenha ordem natural (meses, faixas).
- Contexto em todo número: um KPI sozinho não diz nada — mostre vs meta, vs período anterior, ou a tendência (sparkline).
- Rótulos diretos > legenda distante; títulos que afirmam a conclusão ("Vendas caíram 8% no Sul") > títulos genéricos ("Vendas por região").
- Alinhe numa grade; agrupe o relacionado; deixe respiro (whitespace).
5.3 Dashboard × relatório
| Dashboard | Relatório |
|---|---|
| Uma tela, monitoramento, "está tudo bem?" | Múltiplas páginas, exploração e detalhe |
| 5–9 visuais no máximo; leitura em segundos | Pode ter tabelas densas e muitos filtros |
| Foco nos KPIs e no que exige ação | Foco em responder "por quê" com profundidade |
O anti-padrão mais comum: espremer 25 visuais numa página, cada um pedindo interpretação, e chamar de dashboard. Se o usuário precisa "estudar" a tela, não é dashboard. Separe: uma página-resumo enxuta + páginas de detalhe acessíveis por drill-through.
5.4 Interatividade e narrativa
- Filtros/slicers visíveis e poucos; estado inicial sensato (mês atual, todas as regiões).
- Drill-down (ano → trimestre → mês) e drill-through (clicar numa região abre a página de detalhe daquela região).
- Tooltips ricos (um mini-gráfico no hover) para não poluir a tela principal.
- Ordem de leitura: topo-esquerda = mais importante (KPIs), desça para o detalhe. Conte uma história.
- Mobile: se será visto no celular, faça um layout mobile dedicado, não confie no redimensionamento.
Perguntas e teste prático: "Que gráfico para [pergunta]?", "O que há de errado neste dashboard?" (excesso de visuais, pizza com 8 fatias, eixo truncado, cor sem propósito, sem contexto nos KPIs), "Qual a diferença entre dashboard e relatório?". Em muitos processos você recebe um dataset e precisa entregar um dashboard — a nota vem tanto da modelagem quanto do design.
✏️ Exercício 5 — Critique e refaça
Um "dashboard executivo" tem: um gráfico de pizza 3D com 9 produtos; um gauge de "meta de vendas"; uma tabela de 400 linhas; 6 slicers; um título "Dashboard"; tudo em 5 cores fortes. Liste os problemas e proponha a versão nova.
Gabarito: Problemas: pizza 3D com 9 fatias (ilegível → barra ordenada por valor, ou top 5 + "outros"); gauge (→ card com valor, % da meta e uma barra de progresso ou sparkline); tabela de 400 linhas num executivo (→ mover para página de detalhe via drill-through, deixar só um top 10); 6 slicers (→ 2–3 essenciais, resto em painel recolhível); título genérico (→ afirmar a conclusão do mês); 5 cores fortes (→ neutro + 1 destaque). Nova versão: linha superior com 4 KPIs contextualizados (vs meta, vs mês anterior); no corpo, uma linha de tendência de vendas e uma barra de vendas por categoria; detalhe acessível por clique. 5–7 visuais, leitura em 10 segundos.
Performance
Objetivo: entender por que um relatório fica lento e as alavancas para acelerá-lo — no modelo, nas medidas, no modo de conexão e no design da página.
6.1 Como o motor em memória funciona
Power BI (VertiPaq) e Tableau (Hyper) usam armazenamento colunar comprimido em memória. A performance depende de quão bem cada coluna comprime, e isso depende principalmente da cardinalidade (nº de valores distintos): colunas com poucos valores distintos comprimem muito; colunas de altíssima cardinalidade (IDs únicos, timestamps ao segundo, texto livre) comprimem mal e dominam o tamanho e a lentidão do modelo.
6.2 Alavancas no modelo
- Star schema não é só organização — é performance: o motor é otimizado para fato + dimensões com relações 1:*. Modelos "espaguete" (muitas tabelas, relações bidirecionais, many-to-many) são lentos.
- Reduza cardinalidade: separe
DateTimeemDate+Time; não importe colunas que ninguém usa; arredonde decimais desnecessários; troque chaves textuais longas por inteiras (surrogate keys). - Traga só o necessário: filtre linhas na origem (só os últimos N anos), remova colunas no Power Query/prep, não a página inteira do ERP.
- Evite relações bidirecionais e many-to-many salvo necessidade real e consciente.
- Desabilite auto date/time (Power BI cria uma tabela de datas escondida por coluna de data — use a sua
dCalendario).
6.3 Alavancas nas medidas (DAX)
- Use variáveis (
VAR): calcule uma vez, reutilize; melhora legibilidade e evita recomputar. - Evite iterar sobre a tabela fato inteira quando uma agregação simples resolve; cuidado com
FILTER(tabela inteira, ...)— filtre colunas, não tabelas. - Prefira
DIVIDEa/(trata divisão por zero sem erro/branch). - Meça com o Performance Analyzer (Power BI) e o DAX Studio (server timings, storage engine vs formula engine) para achar a medida/visual culpado.
6.4 Agregações e refresh incremental
- Tabelas de agregação: pré-somar a fato num grão mais alto (por dia/loja/categoria) e deixar o motor usar a agregação para as consultas de alto nível, caindo para o detalhe só quando necessário. Ganho enorme em modelos grandes.
- Incremental refresh: em vez de recarregar 5 anos toda noite, recarregar só a janela recente (últimos X dias) e manter o histórico particionado. Refresh de minutos em vez de horas.
- Composite models / DirectQuery híbrido: histórico frio em DirectQuery, quente em Import.
6.5 Alavancas na página
- Menos visuais por página (cada visual é uma ou mais queries). 6–8 é saudável; 20 é lento por construção.
- Evite tabelas/matrizes com dezenas de milhares de linhas renderizadas.
- Slicers pesados (muitos itens, "select all") custam; considere listas suspensas e menos slicers.
- Cuidado com medidas complексas em cada célula de uma matriz grande (é a medida × nº de células).
Perguntas: "Um relatório está lento — como você investiga?" (Performance Analyzer/DAX Studio → identificar visual/medida → checar cardinalidade e modelo → simplificar DAX / agregações / incremental), "Por que cardinalidade importa?" (compressão colunar), "O que é incremental refresh?", "Por que star schema é mais rápido que tabelona?".
✏️ Exercício 6 — Acelere o modelo
Um modelo Power BI de 4 GB abre em 30 s e os visuais demoram 8 s. Investigação: uma coluna Timestamp ao milissegundo (12M valores distintos) na fato; a fonte traz 40 colunas, 12 usadas; uma relação bidirecional entre duas dimensões; sem tabela calendário (auto date/time ligado). O que fazer?
Gabarito: (1) Quebrar Timestamp em Data (baixa cardinalidade) + Hora (agrupada em minutos ou faixas) — sozinho, deve derrubar o tamanho drasticamente. (2) Remover as 28 colunas não usadas no Power Query. (3) Eliminar a relação bidirecional (usar single direction + medidas com CROSSFILTER se precisar pontualmente). (4) Criar dCalendario dedicada, marcar como tabela de datas, desligar o auto date/time. (5) Se ainda grande: incremental refresh e/ou tabela de agregação por dia. Resultado esperado: modelo de centenas de MB, visuais em < 2 s.
Governança e operação
Objetivo: operar BI como um produto de software — ambientes, versionamento, deploy, segurança de dados, datasets certificados e um catálogo de métricas.
7.1 Ambientes e deployment
- Workspaces por ambiente: Dev → Test → Prod (Power BI Deployment Pipelines; no Tableau, projetos/sites e migração via API/Content Migration Tool).
- Regras de parametrização: a conexão troca de banco automaticamente ao promover de Test para Prod.
- Versionamento: Power BI Project (
.pbip, formato de pasta com TMDL) e Tableau (.tds/.twbXML) vão para o git — revisão de PR, histórico, rollback. "BI como código" está deixando de ser exceção. - CI/CD: validar o modelo (Tabular Editor + regras de "best practice analyzer"), rodar testes de dados, e publicar via API/Fabric no merge.
7.2 Segurança de dados
| Mecanismo | O que faz |
|---|---|
| Row-Level Security (RLS) | Cada usuário vê só as linhas permitidas (o gerente da filial SP só vê SP). Regras estáticas ou dinâmicas (USERPRINCIPALNAME() comparado a uma tabela de mapeamento) |
| Object-Level Security (OLS) | Esconder tabelas/colunas inteiras de certos perfis (ex.: coluna de salário) |
| Permissões de workspace/pasta | Quem pode ver, editar, publicar |
| Sensitivity labels / classificação | Marcar conteúdo confidencial; herança e proteção ao exportar |
| Gateway | Ponte segura entre o serviço de BI na nuvem e fontes on-premises; credenciais centralizadas |
RLS mal configurada ou vaza dado (usuário vê o que não devia) ou bloqueia demais (gráfico vazio, "sem dados"). Use o "View as role" / "Test as user", tenha casos de teste por perfil, e cuidado com relações bidirecionais que podem "furar" o filtro de segurança.
7.3 Datasets certificados e catálogo de métricas
- Endorsement: marcar datasets/data sources como Certified (revisado, oficial) ou Promoted. Usuários filtram por confiável.
- Thin reports: relatórios que se conectam ao dataset certificado em vez de importar dados de novo — a métrica é uma só.
- Catálogo de métricas / data dictionary: para cada KPI — definição em linguagem de negócio, fórmula, fonte, dono, frequência de atualização, ressalvas. Vive num lugar acessível (wiki, catálogo de dados, ou o próprio tooltip da medida).
- Lineage: ver de qual fonte → dataflow → dataset → relatório cada número vem (Power BI lineage view; catálogos como Purview/DataHub).
7.4 Operação
- Monitoramento de refresh: alarme quando uma atualização falha ou atrasa; histórico de duração.
- Métricas de uso: quais relatórios são vistos, por quem, com que frequência — para aposentar os mortos (Módulo 9).
- Ciclo de vida: revisão periódica; conteúdo sem uso vai para arquivo/lixeira; dono responsável por cada workspace.
- Capacidade/custo: em Power BI Premium/Fabric e Tableau Server, monitorar consumo de capacidade e planejar (ver apostila de FinOps).
Vagas sénior de BI são muito sobre isto: "O que é RLS e como você implementa RLS dinâmica?", "Como você versiona e promove conteúdo de BI entre ambientes?", "O que é um dataset certificado e por que thin reports importam?", "Como você garante 'uma verdade' para as métricas?" (dataset/data source certificado + catálogo + thin reports + lineage).
✏️ Exercício 7 — Desenhe a governança
Uma empresa tem 300 relatórios em Power BI, cada área criou os seus, "receita" tem 4 definições, e ninguém sabe qual refresh quebrou ontem. Proponha um plano de governança em 90 dias.
Gabarito (exemplo): Dias 1–30: inventário e métricas de uso (matar/arquivar o que ninguém abre); definir os workspaces Dev/Test/Prod e donos; acordar a definição oficial de "receita" e dos 10 KPIs principais com os donos de negócio. Dias 31–60: construir 1–2 datasets certificados com as medidas oficiais; migrar os relatórios mais usados para thin reports sobre eles; implementar RLS por área com testes por perfil; ligar monitoramento e alerta de refresh. Dias 61–90: publicar o catálogo de métricas; ligar deployment pipeline e versionamento (.pbip no git); política de "novo relatório usa dataset certificado"; revisão trimestral de conteúdo. Resultado: métricas únicas, deploy controlado, e a base de conteúdo reduzida ao que gera valor.
BI em escala e o ecossistema moderno
Objetivo: onde o BI corporativo está indo — camada semântica headless, BI como código, embedded, integração com o lakehouse, alertas, e a chegada da IA em linguagem natural.
8.1 A camada semântica headless
Em vez de definir as métricas dentro de uma ferramenta de BI (e re-defini-las na próxima), define-se uma vez numa camada independente que serve qualquer consumidor:
- dbt Semantic Layer / MetricFlow, Cube, o LookML do Looker: a métrica "receita líquida" mora aqui, versionada, testada, com governança.
- Power BI, Tableau, um notebook, uma planilha, um app, um agente de IA — todos consultam a mesma definição via API/SQL.
- Acaba a divergência de métricas entre ferramentas; a definição fica no controle de versão junto do pipeline de dados.
8.2 BI como código
- Modelo, medidas e relatórios em arquivos de texto (TMDL/`.pbip`, LookML, código do Superset) no git; PR review; CI que valida e publica.
- Best practice analyzer (Tabular Editor) roda no CI como um linter de modelo.
- Ambientes reproduzíveis, rollback, e a possibilidade de gerar relatórios programaticamente.
8.3 Integração com warehouse / lakehouse
- A modelagem (bronze/silver/gold, star schema) acontece no warehouse com ELT + dbt; o BI consome a camada gold.
- DirectQuery/Live sobre o warehouse quando ele é rápido o bastante (ClickHouse, BigQuery BI Engine, Snowflake) — evita duplicar o dado e mantém frescor.
- Formatos abertos (Iceberg/Delta) e "one copy" — o BI lê a mesma tabela que o ML e o ad-hoc.
8.4 Distribuição além do dashboard
- Alertas data-driven: "avise no Teams se a margem cair abaixo de X" — o insight vai ao usuário, o usuário não precisa ir ao dashboard.
- Subscriptions: o relatório por e-mail no horário certo.
- Embedded analytics: dashboards embutidos no produto/portal da empresa ou entregues a clientes (Power BI Embedded, Tableau Embedding, Looker, Sigma).
- Data apps / write-back: o usuário não só vê, mas insere dados de volta (previsões, aprovações).
8.5 IA no BI: o que muda e o que não
- Pergunta em linguagem natural (Copilot no Power BI, Tableau Pulse/Agent, "Explore" do Looker): o usuário pergunta "vendas por região no último trimestre" e a ferramenta gera o visual. Útil para exploração e para quem não domina a ferramenta.
- Resumos e explicações automáticas: "por que este KPI mudou" com decomposição automática dos drivers.
- Geração assistida de DAX/medidas e de relatórios.
- Os limites: a IA responde bem quando o modelo semântico é bom — métricas certificadas, nomes claros, relacionamentos corretos. Sobre um modelo bagunçado, ela alucina números plausíveis e errados. A IA amplifica a qualidade da modelagem e da governança; não a substitui. Continua valendo tudo dos Módulos 3, 4 e 7.
Diferencial em entrevista: "O que é uma camada semântica headless e que problema resolve?", "O que é BI como código?", "Quando usar DirectQuery sobre o warehouse em vez de import?", "A IA que responde perguntas em linguagem natural vai substituir o modelador de BI?" (não — ela depende de um modelo semântico bem feito; sobre um modelo ruim, erra com confiança).
✏️ Exercício 8 — Arquitete o BI moderno
Uma empresa com data warehouse (Snowflake) e dbt quer: métricas consistentes entre Power BI e um app interno; dashboards para clientes externos; e alerta automático de anomalia de faturamento. Esboce a arquitetura.
Gabarito: (1) Modelagem em dbt no Snowflake (camadas silver/gold, star schema). (2) Camada semântica (dbt Semantic Layer / MetricFlow ou Cube) com as métricas oficiais definidas uma vez. (3) Power BI conectado em DirectQuery/live à camada gold + medidas alinhadas à camada semântica (ou consumindo-a); dataset certificado. (4) O app interno consulta a mesma camada semântica via API — mesmos números. (5) Dashboards para clientes via embedded (Power BI Embedded ou uma ferramenta com bom embedding), com RLS por cliente. (6) Alerta de anomalia: job (dbt test / ferramenta de observabilidade de dados) sobre a métrica de faturamento que dispara mensagem no Teams/e-mail. Versionamento: dbt + `.pbip`/LookML no git com CI.
Adoção, cultura de dados e valor
Objetivo: o lado que decide se o BI gera retorno — desenhar KPIs acionáveis, combater a proliferação de dashboards, medir adoção e elevar a literacia de dados da organização.
9.1 KPI acionável × métrica de vaidade
| Métrica de vaidade | KPI acionável |
|---|---|
| "Total de usuários cadastrados" (só sobe, não informa) | "Usuários ativos semanais" e sua tendência |
| "Visitas ao site" | "Taxa de conversão por canal" |
| "Nº de tickets abertos" | "Tempo médio de resolução" e "% resolvido no 1º contato" |
Um bom KPI: liga-se a um objetivo, é comparável (vs meta, período, benchmark), tem um dono que pode agir sobre ele, e leva a uma decisão. Se ninguém muda nada quando o número muda, não é KPI — é enfeite.
Frameworks úteis: North Star Metric (a métrica que melhor representa o valor entregue), OKRs (objetivos + resultados-chave mensuráveis), e a árvore de métricas (decompor o North Star em drivers acionáveis por time).
9.2 A proliferação de dashboards
Sintoma de BI doente: 400 dashboards, 30 usados, "receita" com 5 valores, ninguém confia em nada e todo mundo exporta para o Excel. Causas: self-service sem governança, cada pessoa recria em vez de reusar, nada é aposentado. Combate:
- Datasets certificados + thin reports (Módulo 7) — reusar, não recriar.
- Métricas de uso: aposentar o que ninguém abre há 90 dias.
- Um "produto" de BI por domínio, com dono, em vez de 40 relatórios soltos.
- Processo leve de request/revisão para conteúdo novo em áreas críticas.
- Catálogo pesquisável: a pessoa acha o dashboard certo em vez de fazer o 41º.
9.3 Medir a adoção
- Alcance: % dos usuários-alvo que abriram o conteúdo no mês.
- Frequência e recência: voltam? com que ritmo?
- Profundidade: usam filtros, drill, ou só olham a primeira tela?
- Decisões influenciadas: qualitativo — entrevistas, "que decisão você tomou com isto?".
- "Excel escape": quanto do consumo termina em exportação (sinal de que a ferramenta não atende).
9.4 Literacia de dados
- Treinar os consumidores a ler um gráfico, entender uma média vs mediana, desconfiar de amostra pequena, e a diferença entre correlação e causa.
- Glossário de métricas em linguagem de negócio, acessível no ponto de uso.
- "Office hours" do time de dados; campeões de dados em cada área.
- Cultura de decidir com o número, e de dizer "não sei ainda" quando o dado não suporta a conclusão.
9.5 Migração entre ferramentas e custo em escala
- Migração (ex.: Tableau → Power BI): não é "converter arquivos" — é reconstruir a modelagem e as métricas com a chance de limpar a bagunça. Priorizar pelo uso; rodar em paralelo; validar número a número; treinar os usuários.
- Licenciamento em escala: Power BI Pro por usuário vs Premium/Fabric por capacidade (o ponto de virada costuma ser por volta de algumas centenas de usuários); Tableau Creator/Explorer/Viewer. Modelar o custo antes de crescer (ver apostila de FinOps).
Perguntas de vaga sénior / lead: "Diferença entre KPI acionável e métrica de vaidade", "Como você combate a proliferação de dashboards?", "Como mede se um dashboard gerou valor?" (adoção + decisões influenciadas, não nº de views), "Como conduziria uma migração de Tableau para Power BI?".
✏️ Exercício 9 — Conserte os KPIs
Um dashboard de marketing mostra: "impressões totais", "seguidores ganhos", "e-mails enviados", "posts publicados". A diretoria pergunta "e daí?". Proponha o conjunto de KPIs acionáveis.
Gabarito: Substituir por métricas ligadas a objetivo e decisão: taxa de conversão por canal (e custo por conversão / CAC), receita atribuída por canal, taxa de engajamento (não seguidores brutos), taxa de abertura e de clique dos e-mails com tendência, e ROI de campanha. Cada um com meta, comparação com período anterior, e um dono que pode realocar orçamento. "Impressões" e "posts publicados" viram, no máximo, métricas de contexto secundárias, não o topo do dashboard.
Mercado de trabalho: roadmap, entrevistas e portfólio
Objetivo: converter o conteúdo dos módulos anteriores em aprovação — perfis, certificações, roadmap, banco de perguntas com respostas e projetos que geram entrevista.
10.1 Perfis e certificações
| Perfil | Foco | Certificações comuns |
|---|---|---|
| BI Analyst | Traduzir negócio em dashboards; domínio + ferramenta | PL-300 (Power BI); Tableau Certified Data Analyst |
| BI Developer / Engineer | Modelos, DAX, RLS, performance, deployment | PL-300 + Fabric (DP-600/DP-700); Tableau Certified Consultant |
| Analytics Engineer | Modelagem no warehouse (dbt) que alimenta o BI | dbt Analytics Engineering; certs de cloud |
| BI / Analytics Lead | Governança, camada semântica, adoção, roadmap | As acima + experiência |
| BI Platform Admin | Tenant, capacidade, segurança, gateways | Administração de Power BI/Fabric ou Tableau Server |
10.2 Roadmap de estudo (8–10 semanas)
| Semanas | Foco | Entregável |
|---|---|---|
| 1 | Fundamentos de BI, stack, self-service vs governado; SQL analítico (base) (Módulo 1) | Mapa da solução de BI para um caso real |
| 2 | Ferramenta principal (Power BI ou Tableau) do zero + a outra em nível conceitual (Módulo 2) | Primeiro relatório conectado a dados reais |
| 3–4 | Modelagem dimensional: star schema, grão, calendário, import vs DirectQuery (Módulo 3) | Modelo em estrela de um dataset público (ex.: vendas, táxis, e-commerce) |
| 5 | DAX (ou LOD/table calcs): contexto, CALCULATE, time intelligence (Módulo 4) | 10 medidas: totais, %, YoY, YTD, ranking, médias móveis |
| 6 | Design de dashboard e visualização (Módulo 5) | Dashboard executivo (5–8 visuais) + página de detalhe com drill-through |
| 7 | Performance (Módulo 6) | "Antes/depois" de otimização de um modelo, com números do Performance Analyzer |
| 8 | Governança: RLS, datasets certificados, versionamento, catálogo (Módulo 7) | RLS dinâmica funcionando + catálogo de métricas do projeto |
| 9–10 | Ecossistema moderno e adoção (Módulos 8–9); certificação; portfólio | Estudo de caso publicado + preparo para PL-300 / Tableau |
10.3 Banco de perguntas de entrevista (com a resposta que aprova)
Júnior/pleno — "O que é um star schema e por que usá-lo em BI?"
Uma tabela fato (eventos mensuráveis no grão definido, com chaves e métricas) cercada de dimensões (contexto descritivo para filtrar/agrupar). Vantagens: os motores de BI (VertiPaq/Hyper) são otimizados para ele; DAX/cálculos ficam simples; totais e filtros são inequívocos; comprime bem; e é fácil de manter e de entender. A alternativa "tabelona única" incha, gera ambiguidade em totais e quebra contagens distintas.
Pleno — "Diferença entre medida e coluna calculada"
Coluna calculada: avaliada no refresh, linha a linha, ocupa memória, resultado fixo por linha — usar só para atributos de filtro/agrupamento/relacionamento. Medida: avaliada na consulta, agrega conforme o contexto de filtro do visual, não ocupa memória por linha — usar para todo número exibido (somas, %, YoY, rankings). Regra: na dúvida, medida.
Pleno — "O que é contexto de filtro e o que CALCULATE faz?"
Contexto de filtro é o conjunto de filtros ativos (dos visuais, slicers, eixos da matriz) que determina o que uma medida agrega. CALCULATE modifica esse contexto: adiciona, remove (ALL/REMOVEFILTERS) ou substitui filtros antes de avaliar a expressão. É a função central do DAX — quase toda medida não trivial passa por ela (ex.: % do total, comparação com período, ignorar um slicer).
Pleno/sénior — "Import ou DirectQuery?"
Import por padrão: o motor em memória é rápido, comprime bem, e um refresh agendado atende a maioria dos casos. DirectQuery/Live quando: o volume não cabe em memória/capacidade, há requisito de tempo real, ou política de não copiar o dado; o custo é depender da performance da fonte. Modelos compostos combinam os dois (histórico frio em DirectQuery, quente em Import).
Sénior — "Como garantir que 'receita' seja o mesmo número em toda a empresa?"
Centralizar a definição: um dataset/data source certificado com a medida oficial, e relatórios como thin reports que se conectam a ele (não recriam a medida); ou uma camada semântica headless (LookML, dbt Semantic Layer, Cube) consumida por todas as ferramentas. Somar a isso: catálogo de métricas com definição de negócio e dono, lineage, e política de "novo relatório usa o modelo certificado".
Sénior — "Um relatório está lento. Seu processo?"
Medir com Performance Analyzer / DAX Studio para isolar o visual e a query culpados (storage engine vs formula engine). Checar o modelo: cardinalidade alta (timestamps, IDs), colunas não usadas, relações bidirecionais/many-to-many, ausência de star schema, auto date/time. Simplificar o DAX (variáveis, filtrar colunas e não tabelas). Se ainda grande: tabelas de agregação, incremental refresh, reduzir visuais por página. Medir de novo.
Armadilha — "Fiz um dashboard com todos os dados que temos"
Sinal de imaturidade. Dashboard não é despejo de dados — é responder a uma pergunta de negócio com o mínimo de visuais, focado no que exige ação, legível em segundos. "Todos os dados" vira uma página de detalhe/relatório acessível por drill-through, não a tela principal. A pergunta certa é "que decisão esta tela apoia?".
10.4 Projetos de portfólio que geram entrevista
- Solução end-to-end (âncora): pegar um dataset público de negócio (varejo, e-commerce, saúde pública, transporte), modelar em estrela, escrever ~12 medidas (incluindo time intelligence), construir um dashboard executivo + páginas de detalhe com drill-through, implementar RLS, e documentar as decisões e um catálogo de métricas. Publicar (Power BI/Tableau Public + artigo).
- "Antes/depois" de performance: um modelo propositalmente ruim (tabelona, timestamps, relações bidirecionais) e a versão otimizada, com números de Performance Analyzer e explicação.
- Estudo de design: refazer um dashboard ruim (real ou inventado), lado a lado, explicando cada mudança pelos princípios do Módulo 5.
- DAX/LOD em profundidade: um conjunto de padrões de medidas resolvidos e explicados (ranking dinâmico, % do total em vários níveis, comparação de períodos, cohort simples).
- BI moderno: um projeto pequeno com dbt no warehouse + camada semântica + o BI conectado ao vivo, mostrando "uma verdade" entre duas ferramentas.
10.5 Fontes para continuar
- Modelagem: The Data Warehouse Toolkit (Kimball); Analyzing Data with Power BI and Power Pivot e The Definitive Guide to DAX (Russo & Ferrari / SQLBI).
- DAX: SQLBI (artigos, DAX Guide, patterns); DAX Studio e Tabular Editor (ferramentas).
- Visualização: The Visual Display of Quantitative Information (Tufte); Information Dashboard Design e Show Me the Numbers (Stephen Few); Storytelling with Data (Cole Nussbaumer Knaflic).
- Tableau: a documentação de LOD e table calculations; a comunidade "Makeover Monday" para praticar design.
- Moderno: docs do dbt Semantic Layer / MetricFlow e do Cube; material sobre "BI as code" e "headless BI".
Quatro ideias sustentam BI corporativo: (1) o valor está na decisão tomada, não no dashboard entregue — KPI que ninguém age sobre é enfeite; (2) modelo em estrela + grão bem definido é o alicerce de tudo (performance, cálculo, confiança); (3) uma métrica, uma definição — dataset certificado ou camada semântica, senão a empresa discute números em vez de agir; (4) menos é mais no design — o dashboard responde a uma pergunta em segundos, o detalhe fica a um clique. As ferramentas e a IA em cima delas mudam; esses princípios, não.