Módulo 9: DAX avançado: iteradores, tabelas virtuais e metas

Aula 3 de 4

TREATAS, medidas dinâmicas e segmentação por medida

Relacionar sem relacionamento e deixar o usuário escolher o que a medida calcula.

19 minutos de leitura


TREATAS

TREATAS aplica os valores de uma tabela como filtro sobre uma coluna de outra tabela. É a forma mais limpa de criar um relacionamento virtual, sem poluir o modelo com relacionamentos extras.

DAXMeta mensal aplicada sem relacionamento físico
Meta do Período =CALCULATE(    SUM( fMetas[ValorMeta] ),    TREATAS(        VALUES( dCalendario[AnoMes] ),        fMetas[AnoMes]    ),    TREATAS(        VALUES( dVendedor[Vendedor] ),        fMetas[Vendedor]    ))

Medidas dinâmicas com SWITCH

Em vez de criar 4 páginas iguais mudando só o indicador, crie uma tabela de seleção e deixe o usuário escolher. Menos manutenção, mais liberdade.

DAXSeletor de indicador
-- dIndicador: tabela desconectada com Indicador (texto) e Ordem (número)Indicador Selecionado =VAR Escolha = SELECTEDVALUE( dIndicador[Indicador], "Receita" )RETURNSWITCH( Escolha,    "Receita",      [Receita Total],    "Margem",       [Margem Bruta],    "Margem %",     [Margem %],    "Qtd Pedidos",  [Qtd Pedidos],    "Ticket Médio", [Ticket Médio],    BLANK()) -- Formato dinâmico (Power BI moderno: Ferramentas de Medida → Formato Dinâmico)Formato do Indicador =SWITCH( SELECTEDVALUE( dIndicador[Indicador], "Receita" ),    "Margem %", "0.0%",    "Qtd Pedidos", "#,##0",    "\R$ #,##0")

Parâmetros de campo (Field Parameters)

Recurso nativo: Modelagem → Novo parâmetro → Campos. Ele cria uma tabela onde cada linha é um campo ou medida. O usuário troca via segmentação e o visual muda de dimensão — sem nenhum SWITCH.

  • Use parâmetro de campo quando quiser trocar a DIMENSÃO do eixo (produto, região, vendedor).
  • Use SWITCH quando quiser trocar a MEDIDA com lógica ou formatação própria.
  • Você pode combinar os dois na mesma página: um seletor de eixo e um de indicador.
DAXSegmentação por faixa calculada (banding dinâmico)
-- dFaixaTicket: tabela desconectada com Rotulo, Min, Max, OrdemPedidos na Faixa =VAR MinFaixa = SELECTEDVALUE( dFaixaTicket[Min] )VAR MaxFaixa = SELECTEDVALUE( dFaixaTicket[Max] )RETURNCALCULATE(    [Qtd Pedidos],    FILTER(        VALUES( fVendas[NumeroPedido] ),        VAR ValorPedido = CALCULATE( [Receita Total] )        RETURN ValorPedido >= MinFaixa && ValorPedido < MaxFaixa    ))

Exercício prático

Crie a tabela dIndicador com 5 opções, a medida dinâmica com SWITCH e um título que mostra o nome do indicador escolhido. Depois adicione um parâmetro de campo para trocar a dimensão do eixo.