BI, Power BI e Visualização
Entenda do zero · BI e Power BI
BI não começa no gráfico. Começa na pergunta que alguém precisa responder para tomar uma decisão.
1. Para que serve BI?
Business Intelligence reúne processos e ferramentas para transformar dados em informação útil à gestão. Saber que houve R$ 8 milhões de arrecadação é um começo. Comparar esse valor com a meta, o período anterior e cada região ajuda a interpretar a situação. Um indicador dá contexto à medida; um KPI acompanha um objetivo considerado essencial.
2. O caminho básico dentro do Power BI
Você conecta as fontes, prepara os dados no Power Query, cria relacionamentos no modelo e monta cálculos e visuais. O Power Query usa a linguagem M para transformações, como corrigir tipos e remover duplicidades. DAX é a linguagem usada em medidas e outros cálculos do modelo. São ferramentas com funções diferentes.
3. Fatos e dimensões: números e contexto
Uma tabela fato pode registrar cada pagamento com data, contribuinte e valor. As dimensões descrevem entidades como calendário e município. No modelo estrela, dimensões se relacionam com a fato. Antes de somar, defina o grão: o que cada linha representa? Misturar totais mensais com pagamentos individuais pode duplicar resultados.
Total arrecadado = SUM(Arrecadacao[Valor])Sem restrições, a medida soma os valores visíveis no contexto atual. Ao selecionar um município no relatório, o filtro chega à fato por um relacionamento adequado, e a mesma medida passa a somar só esse município. Essa seleção compõe o contexto de filtro.
4. Coluna calculada e medida não são a mesma coisa
Em um modelo Import, uma coluna calculada normalmente é calculada por linha na atualização e armazenada. Uma medida é avaliada conforme o contexto da consulta. Para comparar evolução no tempo, uma linha costuma ajudar; para comparar categorias, barras costumam ser mais claras. O visual precisa responder à pergunta, não apenas decorar o painel.
Confira se entendeu: mudar um filtro exige escrever outra medida de total?
Em geral, não. A medida é reavaliada no novo contexto. Relacionamentos e expressões DAX que alteram filtros podem modificar esse comportamento.
A seguir, aprofunde modelagem, contextos DAX e visualização.
Arquitetura de BI, indicadores e métricas
- Fluxo clássico: fontes (sistemas transacionais, planilhas, APIs) → integração (ETL/ELT, staging) → armazenamento analítico (DW, data marts, lakehouse) → camada semântica/OLAP (modelo com medidas, hierarquias) → apresentação (relatórios, dashboards, consultas ad hoc).
- Em paralelo: metadados e governança (segurança, qualidade, catálogo).
| Termo | O que é | Exemplo SEFAZ |
|---|---|---|
| Dado | Fato bruto | Valor de uma NF-e |
| Métrica | Medida quantitativa qualquer | Total arrecadado no mês |
| Indicador | Métrica contextualizada (razão, taxa, comparação) | Arrecadação / PIB estadual |
| KPI | Indicador-chave ligado a objetivo estratégico, com meta | Índice de recuperação da dívida ativa vs meta anual |
Relatório x dashboard (conceito geral)
| Relatório | Dashboard (painel) | |
|---|---|---|
| Foco | Detalhe, exploração, várias páginas | Visão consolidada de KPIs "num relance" |
| Público | Analistas | Gestores, monitoramento |
- Dashboards por nível: estratégico (alta gestão, KPIs, tendência longa), tático/analítico (gerência, comparação e investigação), operacional (tempo real, monitoramento do processo).
Tipos de análise e Self-service BI
| Análise | Pergunta | Técnicas | Valor/complexidade |
|---|---|---|---|
| Descritiva | O que aconteceu? | Relatórios, agregações, dashboards | Menor |
| Diagnóstica | Por que aconteceu? | Drill-down, correlação, análise de causa | ↑ |
| Preditiva | O que vai acontecer? | Modelos estatísticos, ML, séries temporais | ↑↑ |
| Prescritiva | O que devemos fazer? | Otimização, simulação, recomendação | Maior |
Self-service BI
- Usuário de negócio cria as próprias análises e relatórios sem depender da TI para cada pedido (Power BI, Tableau, Qlik).
- Benefícios: agilidade, autonomia, menos fila na TI.
- Riscos: versões conflitantes da verdade, "planilhas-sombra", vazamento de dados, modelos sem qualidade.
- Equilíbrio: BI gerenciado + self-service governado — TI/equipe de dados publica modelos semânticos certificados e compartilhados; a área de negócio cria relatórios sobre eles.
Ecossistema Power BI
| Componente | Função |
|---|---|
| Power BI Desktop | Aplicativo Windows gratuito para conectar, transformar (Power Query), modelar (DAX) e criar relatórios (.pbix) |
| Serviço do Power BI (nuvem, SaaS) | Publicar, compartilhar, workspaces, apps, dashboards, atualização agendada, alertas, assinaturas |
| Power BI Mobile | Consumo em celular/tablet |
| Gateway de dados local | Ponte segura entre o serviço na nuvem e fontes on-premises (refresh e DirectQuery) |
| Power BI Report Server | Publicação on-premises |
| Microsoft Fabric | Plataforma unificada de dados (OneLake, lakehouse, data factory) na qual o Power BI está integrado |
- Modos de exibição do Desktop: Relatório, Tabela (dados), Modelo (relacionamentos), além de Exibição de consulta DAX e Exibição TMDL nas versões recentes.
- O antigo "conjunto de dados" (dataset) passou a se chamar modelo semântico (semantic model).
| Relatório (Power BI) | Dashboard (Power BI) | |
|---|---|---|
| Páginas | Uma ou várias | Uma única tela (canvas) |
| Onde se cria | Desktop e Serviço | Somente no Serviço |
| Fonte | Um modelo semântico | Blocos (tiles) fixados de vários relatórios/modelos |
| Interatividade | Alta: filtros, segmentações, drill | Limitada: clicar no bloco leva ao relatório |
| Alertas de dados | Não | Sim (em blocos de cartão, KPI e medidor) |
Modos de armazenamento e conexão
| Modo | Onde ficam os dados | Vantagem | Limitação |
|---|---|---|---|
| Import (importação) | Copiados para o modelo em memória (motor VertiPaq, colunar e comprimido) | Desempenho máximo, DAX e Power Query completos | Dado só tão atual quanto o último refresh; limite de tamanho do modelo |
| DirectQuery | Permanecem na fonte; cada visual gera consulta | Dado quase em tempo real; volumes muito grandes | Mais lento, depende da fonte; algumas transformações/funções limitadas |
| Dual (duplo) | Tabela pode agir como Import ou DirectQuery conforme a consulta | Útil para dimensões em modelos compostos | — |
| Composto (composite) | Mistura tabelas Import e DirectQuery no mesmo modelo | Equilíbrio desempenho x atualidade | Mais complexo |
| Conexão dinâmica (Live connection) | Conecta a um modelo já publicado (Analysis Services / modelo semântico do Serviço) | Reaproveita modelo certificado | Não edita o modelo de origem (sem Power Query) |
| Direct Lake (Fabric) | Lê direto as tabelas Delta do OneLake | Desempenho próximo do Import sem cópia/refresh tradicional | Exige Fabric/OneLake |
Power Query: transformações e tipos
- Ferramenta de ETL do Power BI (também presente no Excel e nos Dataflows). Cada ação vira uma etapa aplicada (Applied Step) gravada em linguagem M.
- As etapas são reaplicadas a cada atualização. Mudanças de esquema, tipos ou formato da origem podem exigir manutenção: uma transformação não fica correta “para sempre” apenas porque funcionou uma vez.
- Dobragem de consulta (query folding): o Power Query traduz as etapas para a linguagem da fonte (ex.: SQL) e quem processa é a fonte. Verifica-se por "Exibir Consulta Nativa". Algumas etapas quebram a dobragem e as seguintes passam a rodar localmente.
- Tipos de dados: Texto, Número inteiro, Número decimal, Decimal fixo (moeda), Data, Hora, Data/Hora, Data/Hora/Fuso, Duração, Verdadeiro/Falso, Binário. Tipo errado (ex.: data como texto) quebra ordenação, soma e inteligência de tempo.
- Criação de perfil de dados: Qualidade da coluna (válido/erro/vazio), Distribuição (distintos/únicos), Perfil da coluna. Por padrão analisa as primeiras 1.000 linhas; pode-se mudar para o conjunto inteiro.
| Transformação | O que faz |
|---|---|
| Remover/escolher colunas e linhas, remover duplicatas, remover erros | Limpeza |
| Usar primeira linha como cabeçalho | Promove cabeçalhos |
| Dividir coluna (por delimitador, nº de caracteres) | Ex.: "SP-Capital" → "SP" | "Capital" |
| Substituir valores, Preencher (para baixo/cima) | Corrige vazios em relatórios "mesclados" |
| Agrupar por | Agrega (soma, contagem…) como GROUP BY |
| Coluna personalizada / condicional / a partir de exemplos | Cria colunas por fórmula M, regras se-então ou exemplos digitados |
| Transformar x Adicionar coluna | Transformar altera a coluna existente; Adicionar coluna cria nova mantendo a original |
Pivot x Unpivot
| Dinamizar coluna (Pivot) | Transformar colunas em linhas (Unpivot) |
|---|---|
| Valores de uma coluna viram novas colunas (longo → largo) | Várias colunas viram pares Atributo/Valor em linhas (largo → longo) |
| Ex.: coluna Mês com jan, fev → colunas Jan, Fev | Ex.: planilha com colunas Jan…Dez → colunas Mês e Valor |
Power Query: combinar consultas (Mesclar x Acrescentar)
| Mesclar consultas (Merge) | Acrescentar consultas (Append) | |
|---|---|---|
| Equivale em SQL a | JOIN | UNION ALL |
| Efeito | Acrescenta colunas (lado a lado) pela coluna-chave | Acrescenta linhas (empilha) |
| Uso | Trazer a razão social do cadastro para a tabela de notas | Juntar arquivos de jan, fev, mar com mesma estrutura |
| Função M | Table.NestedJoin (+ expandir) | Table.Combine |
Os 6 tipos de junção do Mesclar
| Tipo | Retorna |
|---|---|
| Externa esquerda (Left Outer) — padrão | Todas da primeira + correspondentes da segunda |
| Externa direita (Right Outer) | Todas da segunda + correspondentes da primeira |
| Externa completa (Full Outer) | Todas de ambas |
| Interna (Inner) | Só correspondentes |
| Anti esquerda (Left Anti) | Só as da primeira sem correspondência |
| Anti direita (Right Anti) | Só as da segunda sem correspondência |
Linguagem M
- Linguagem funcional do Power Query; expressão
let ... in: cada linha doleté uma etapa nomeada; oinindica qual etapa é o resultado. - Sensível a maiúsculas e minúsculas (case-sensitive):
Table.SelectRows≠table.selectrows. - Nomes com espaço:
#"Linhas Filtradas". Comentários://e/* */. each [Coluna] > 0é atalho para função de um parâmetro(_) => _[Coluna] > 0.- Valores: listas
{1, 2, 3}, registros[Nome = "SP", Cod = 35], tabelas.
let
Fonte = Csv.Document(File.Contents("C:\dados\nfe.csv"), [Delimiter=";"]),
Cabecalhos = Table.PromoteHeaders(Fonte),
Tipos = Table.TransformColumnTypes(Cabecalhos,
{{"dt_emissao", type date}, {"valor", type number}}),
#"Só SP" = Table.SelectRows(Tipos, each [uf] = "SP"),
ComFaixa = Table.AddColumn(#"Só SP", "faixa",
each if [valor] >= 10000 then "Alta" else "Baixa", type text)
in
ComFaixa
Modelagem de dados no Power BI
- Melhor prática: esquema estrela — fatos (números, chaves) no centro, dimensões (descrições) em volta, relação 1:* da dimensão para a fato.
- Granularidade: defina o grão da fato; fatos de grãos diferentes (meta mensal x realizado diário) se relacionam pelas dimensões comuns no nível compatível.
- Hierarquias: Ano › Trimestre › Mês › Dia; habilitam drill-down nos visuais.
- Tabela de datas: uma linha por dia, contínua, sem lacunas nem duplicatas, coluna do tipo Data; deve ser marcada como tabela de datas. Pode ser criada com
CALENDAR(início, fim)ouCALENDARAUTO(). - Ocultar chaves e colunas técnicas da exibição do relatório; usar medidas explícitas em vez de somas implícitas.
Relacionamentos: cardinalidade e direção
| Cardinalidade | Quando | Observação |
|---|---|---|
| Um para muitos (1:*) / muitos para um | Dimensão → fato (o padrão desejado) | Lado "1" com valores únicos |
| Um para um (1:1) | Duas tabelas com chave única dos dois lados | Filtro sempre nos dois sentidos; avalie unir as tabelas |
| Muitos para muitos (*:*) | Nenhum lado tem valores únicos | Use com cautela; alternativa é tabela-ponte |
| Direção do filtro cruzado | Efeito |
|---|---|
| Única (Single) — padrão em 1:* | Filtro flui do lado "1" (dimensão) para o lado "muitos" (fato) |
| Ambas (Both / bidirecional) | Filtro flui nos dois sentidos; pode gerar ambiguidade e lentidão; use pontualmente (ou via CROSSFILTER numa medida) |
- Entre duas tabelas só pode haver um relacionamento ativo (linha contínua no diagrama). Os demais ficam inativos (linha tracejada) e são ativados numa medida com
USERELATIONSHIP. - Exemplo: fato com DataEmissao (ativo) e DataPagamento (inativo) ligadas à mesma dCalendario (dimensão role-playing).
Valor por Pagamento =
CALCULATE ( [Total Arrecadado],
USERELATIONSHIP ( fPagamentos[DataPagamento], dCalendario[Data] ) )
DAX: fundamentos e contextos
| Coluna calculada | Medida | Tabela calculada | |
|---|---|---|---|
| Quando calcula | Na atualização (refresh), linha a linha | Na consulta, em tempo de exibição | Na atualização |
| Armazena? | Sim (ocupa memória) | Não | Sim |
| Contexto natural | Contexto de linha | Contexto de filtro | — |
| Reage a filtros/segmentações? | Não (valor fixo por linha) | Sim | Não |
| Uso típico | Atributo para fatiar/filtrar (faixa, categoria) | Agregações, KPIs, % | Tabela de datas, tabelas auxiliares |
Os dois contextos
- Contexto de linha: "a linha atual". Existe em colunas calculadas e dentro de iteradores (funções X: SUMX, AVERAGEX, COUNTX, FILTER…). Sozinho não filtra nada.
- Contexto de filtro: conjunto de filtros ativos vindo de linhas/colunas do visual, segmentações, filtros de página/relatório, RLS e do próprio CALCULATE.
- Transição de contexto:
CALCULATEconverte o contexto de linha em contexto de filtro equivalente. Ocorre também quando uma medida é chamada dentro de contexto de linha (há um CALCULATE implícito em toda medida).
-- Coluna calculada em dContribuinte:
Total SEM transicao = SUM ( fNFe[Valor] ) -- mesmo total geral em todas as linhas
Total COM transicao = CALCULATE ( SUM ( fNFe[Valor] ) ) -- total de cada contribuinte
Total via medida = [Total NFe] -- idem: medida já embute CALCULATE
Agregadores x iteradores
| SUM | SUMX |
|---|---|
| Soma uma coluna | Percorre uma tabela linha a linha avaliando uma expressão e soma os resultados |
SUM ( fNFe[Valor] ) | SUMX ( fItens, fItens[Qtd] * fItens[PrecoUnit] ) |
| Não aceita expressão | Cria contexto de linha |
| RELATED | RELATEDTABLE |
|---|---|
| Do lado muitos busca um valor no lado um (como PROCV) | Do lado um retorna a tabela de linhas relacionadas no lado muitos |
Na fato: RELATED ( dProduto[Categoria] ) | Na dimensão: COUNTROWS ( RELATEDTABLE ( fNFe ) ) |
Funções de contagem e utilidades
COUNTROWS(tabela)conta linhas;COUNTconta valores não vazios de uma coluna;COUNTAconta não vazios de qualquer tipo (inclusive lógico);COUNTBLANKconta vazios;DISTINCTCOUNTconta distintos.DIVIDE(num, den [, alternativo]): divisão segura — retorna BLANK (ou o alternativo) quando o denominador é zero. Prefira a/.VAR ... RETURN: variáveis — legibilidade e desempenho (calculada uma vez).- Operadores:
&&(E),||(OU),IN { },&concatena texto.
CALCULATE e funções de filtro
CALCULATE(expressão, filtro1, filtro2, ...): avalia a expressão em um contexto de filtro modificado. É a função mais importante do DAX.- Filtro booleano
dRegiao[UF] = "SP"substitui filtro existente sobre essa coluna (internamente viraFILTER(ALL(dRegiao[UF]), ...)). Vários argumentos de filtro combinam-se com E. KEEPFILTERSfaz o novo filtro se somar (interseção) ao existente em vez de substituí-lo.
| Função | O que faz | Uso típico |
|---|---|---|
| FILTER(tabela, condição) | Iterador que retorna tabela com as linhas que atendem à condição | Condições complexas, comparar com medida |
| ALL(tabela ou colunas) | Ignora (remove) todos os filtros da tabela/colunas; também retorna tabela | Denominador do % do total geral |
| ALLEXCEPT(tabela, col1, ...) | Remove filtros da tabela exceto das colunas indicadas | % dentro da UF (mantém UF, remove o resto) |
| ALLSELECTED | Remove filtros internos do visual, mas respeita os externos (segmentações) | % do total visível |
| REMOVEFILTERS | Igual ao ALL como modificador do CALCULATE (nome mais claro); não retorna tabela | Limpar filtros |
| VALUES(col) / DISTINCT(col) | Valores distintos visíveis no contexto (VALUES pode incluir a linha em branco de integridade) | Iterar sobre itens visíveis |
| SELECTEDVALUE(col [, alt]) | Retorna o valor se houver exatamente um no contexto; senão, o alternativo | Títulos dinâmicos |
| HASONEVALUE(col) | TRUE se há um único valor filtrado | Tratar linha de total |
Total Arrecadado = SUM ( fArrecadacao[Valor] )
% do Total Geral =
DIVIDE ( [Total Arrecadado],
CALCULATE ( [Total Arrecadado], ALL ( dMunicipio ) ) )
% dentro da UF =
DIVIDE ( [Total Arrecadado],
CALCULATE ( [Total Arrecadado], ALLEXCEPT ( dMunicipio, dMunicipio[UF] ) ) )
Grandes Contribuintes =
CALCULATE ( [Total Arrecadado],
FILTER ( dContribuinte, [Total Arrecadado] > 1000000 ) )
FILTER(fatoInteira, ...) quando basta filtro de coluna é má prática de desempenho.DAX: inteligência de tempo
Pré-requisito: tabela de datas contínua, marcada como tabela de datas e relacionada à fato.
| Função | Retorna / faz |
|---|---|
TOTALYTD(expr, datas) | Acumulado do ano até a data (YTD). Também TOTALQTD, TOTALMTD; aceita data de fim de exercício |
DATESYTD(datas) | Tabela de datas do início do ano até a data — usada dentro de CALCULATE |
SAMEPERIODLASTYEAR(datas) | Mesmo período do ano anterior |
DATEADD(datas, n, intervalo) | Desloca o período em n dias/meses/trimestres/anos |
PARALLELPERIOD(datas, n, intervalo) | Período completo deslocado (mês/trimestre/ano inteiro) |
DATESINPERIOD(datas, início, n, intervalo) | Janela móvel (ex.: últimos 12 meses) |
DATESBETWEEN(datas, início, fim) | Intervalo entre duas datas |
PREVIOUSMONTH / NEXTMONTH / PREVIOUSYEAR | Período anterior/seguinte inteiro |
Arrecadacao YTD = TOTALYTD ( [Total Arrecadado], dCalendario[Data] )
Arrecadacao AA = CALCULATE ( [Total Arrecadado], SAMEPERIODLASTYEAR ( dCalendario[Data] ) )
Variacao % AA = DIVIDE ( [Total Arrecadado] - [Arrecadacao AA], [Arrecadacao AA] )
Movel 12 meses = CALCULATE ( [Total Arrecadado],
DATESINPERIOD ( dCalendario[Data], MAX ( dCalendario[Data] ), -12, MONTH ) )
DATEADD(datas, -1, YEAR).Filtros, interações e segurança (RLS)
- Níveis no painel de filtros: no visual, na página, em todas as páginas (relatório). Há ainda filtro de detalhamento (drillthrough).
- Segmentação de dados (slicer): filtro visual na página; pode ser sincronizada entre páginas.
- Editar interações: define como um visual afeta os outros — filtrar, realçar (highlight, padrão em muitos visuais) ou nenhum.
- Drill-down/up em hierarquias; drillthrough leva para página de detalhe filtrada; dica de ferramenta (tooltip) de página.
- Indicadores (bookmarks): salvam estado da página (filtros, visibilidade) — base para navegação e storytelling.
- Ordem de precedência prática: RLS restringe tudo antes; depois filtros de relatório, página, visual e as interações.
RLS — Row-Level Security (segurança em nível de linha)
- Definida no Desktop em Gerenciar funções (roles) com expressões DAX de filtro; usuários/grupos são atribuídos às funções no Serviço.
- Estática:
[UF] = "SP". Dinâmica: usa a identidade do usuário —[Email] = USERPRINCIPALNAME()— com tabela de permissões. - Testa-se com "Exibir como" (View as).
- No workspace, a RLS se aplica a quem tem papel de Visualizador; Administrador, Membro e Colaborador não são restringidos por ela.
- OLS (Object-Level Security) oculta tabelas/colunas inteiras.
-- Função "Auditor regional" na tabela dDelegacia
dDelegacia[EmailAuditor] = USERPRINCIPALNAME ()
Visualização de dados: escolha do gráfico
| Objetivo | Gráfico indicado | Evite |
|---|---|---|
| Comparar categorias | Barras (horizontais para rótulos longos) / colunas | 3D, pizza com muitas fatias |
| Evolução no tempo | Linha; colunas para poucos períodos | Pizza |
| Composição (parte-todo) | Pizza/rosca com poucas fatias; barras empilhadas 100%; treemap | Pizza com 8+ categorias |
| Composição ao longo do tempo | Área empilhada, colunas empilhadas | — |
| Distribuição | Histograma, boxplot | Pizza |
| Relação entre 2 variáveis | Dispersão (scatter); bolhas para 3ª variável | Linha |
| Variação incremental (ponte) | Cascata (waterfall): receita prevista → ajustes → realizada | — |
| Etapas de processo | Funil | — |
| Valor único / meta | Cartão, KPI, medidor (gauge) | — |
| Geografia | Mapa coroplético (preenchido), mapa de bolhas | — |
| Detalhe tabular | Tabela, matriz (com subtotais e drill) | — |
| Fatores que explicam | Visuais de IA: Principais influenciadores, Árvore de decomposição, Perguntas e Respostas (Q&A) | — |
Comunicação, storytelling e design de dashboards
- Tufte: maximizar a razão dados-tinta (data-ink ratio) e eliminar chartjunk (3D, sombras, grades pesadas, enfeites).
- Atributos pré-atentivos: cor, tamanho, posição, orientação, intensidade — percebidos antes da atenção consciente; use para destacar o que importa (um destaque por visual).
- Gestalt: proximidade, similaridade, cercamento, conexão, continuidade — agrupar elementos relacionados.
- Storytelling com dados (Cole Nussbaumer Knaflic): entender o contexto e o público → escolher o visual adequado → eliminar a saturação → focar a atenção → pensar como designer → contar uma história (início, meio, fim; chamada para ação).
- Paletas: sequencial (valores ordenados de baixo a alto), divergente (desvio em torno de ponto central, ex.: acima/abaixo da meta), categórica/qualitativa (categorias sem ordem). Atenção a daltonismo (evitar só vermelho x verde).
Boas práticas de dashboard
- Responder às perguntas do público em poucos segundos; idealmente caber em uma tela (Stephen Few).
- Leitura em Z/F: o mais importante no canto superior esquerdo (cartões de KPI no topo), detalhe abaixo.
- Poucos visuais por página; títulos que dizem a conclusão ("Arrecadação caiu 4% em set") e não só o nome da métrica.
- Contexto sempre: meta, período anterior, tendência — número sozinho não informa.
- Consistência de cores e formatos; mesma cor = mesmo significado em todas as páginas.
Teste rápido
1. Medidas DAX são calculadas durante a atualização do modelo e armazenadas em memória, como as colunas calculadas.
Errado. Medidas são calculadas no momento da consulta, respondendo ao contexto de filtro, e não são armazenadas. Coluna calculada é que é computada no refresh e ocupa memória.
2. A função CALCULATE, quando executada em contexto de linha, realiza a transição de contexto, convertendo a linha atual em filtros equivalentes.
Certo. É a definição de transição de contexto; também ocorre ao referenciar uma medida dentro de contexto de linha.
3. Para empilhar as tabelas de arrecadação de janeiro, fevereiro e março, de mesma estrutura, deve-se usar Mesclar consultas.
Errado. Empilhar linhas é Acrescentar (Append, como UNION). Mesclar é junção (JOIN), acrescenta colunas.
4. Em um relacionamento um-para-muitos com direção de filtro única, a tabela do lado "um" filtra a tabela do lado "muitos".
Certo. O filtro flui da dimensão (1) para a fato (*).
5. A expressão CALCULATE([Total], ALL(dMunicipio)) retorna o total respeitando o filtro de município aplicado na segmentação.
Errado. ALL remove os filtros da tabela dMunicipio, retornando o total geral (base do "% do total").
6. No modo DirectQuery, os dados são importados para o motor VertiPaq, garantindo o melhor desempenho de consulta.
Errado. Isso descreve Import. No DirectQuery os dados ficam na fonte e cada visual dispara consulta.
7. A linguagem M do Power Query é sensível a maiúsculas e minúsculas, e uma consulta é estruturada pela expressão let ... in.
Certo. M é case-sensitive; o let define as etapas e o in indica o resultado.
8. Para transformar uma planilha com colunas Jan a Dez em duas colunas (Mês e Valor), usa-se a operação de:
Transformar colunas em linhas (Unpivot). Pivot faz o caminho inverso (valores de linhas viram colunas).
9. Dashboards do Power BI podem ter várias páginas e são criados no Power BI Desktop.
Errado. Dashboard tem uma única página e é criado no Serviço, fixando blocos de relatórios.
10. A análise que responde "o que devemos fazer para reduzir a inadimplência?" recomendando ações é a análise preditiva.
Errado. Recomendar ações é prescritiva. A preditiva estimaria quem provavelmente ficará inadimplente.
11. Entre duas tabelas pode haver mais de um relacionamento, mas apenas um ativo; os inativos podem ser usados em medidas com USERELATIONSHIP.
Certo. Caso típico: data de emissão (ativa) e data de pagamento (inativa) com a mesma tabela calendário.
12. SUMX(fItens, fItens[Qtd] * fItens[Preco]) e SUM(fItens[Qtd]) * SUM(fItens[Preco]) produzem sempre o mesmo resultado.
Errado. SUMX multiplica linha a linha e depois soma; o produto das somas é outra conta (e em geral dá valor diferente).