VALUES e DISTINCT
As duas devolvem os valores únicos de uma coluna no contexto atual. A diferença: VALUES inclui a linha em branco criada por chaves órfãs; DISTINCT não.
DAXUsos mais comuns de VALUES
-- Detectar se há apenas um valor selecionadoTítulo Dinâmico =IF( HASONEVALUE( dProduto[Categoria] ), "Análise de " & VALUES( dProduto[Categoria] ), "Todas as categorias") -- Forma moderna e segura da mesma coisaTítulo Dinâmico 2 ="Análise de " & SELECTEDVALUE( dProduto[Categoria], "todas as categorias" ) -- Contar categorias presentes no contextoQtd Categorias = COUNTROWS( VALUES( dProduto[Categoria] ) )RELATED e RELATEDTABLE
| Função | Direção | Onde usar |
|---|---|---|
| RELATED(coluna) | Do lado muitos para o lado um | Coluna calculada na fato buscando atributo da dimensão |
| RELATEDTABLE(tabela) | Do lado um para o lado muitos | Coluna calculada na dimensão agregando a fato |
DAXOs dois lados da relação
-- Coluna em fVendas (lado muitos): puxa um único valor da dimensãoCusto Padrão = RELATED( dProduto[CustoPadrao] ) -- Coluna em dCliente (lado um): agrega a fato relacionadaQtd Pedidos do Cliente = COUNTROWS( RELATEDTABLE( fVendas ) )Última Compra = MAXX( RELATEDTABLE( fVendas ), fVendas[Data] )LOOKUPVALUE: quando não há relacionamento
DAXBuscando valor sem relacionamento
Meta do Vendedor =LOOKUPVALUE( fMetas[ValorMeta], fMetas[Vendedor], fVendas[Vendedor], fMetas[AnoMes], FORMAT( fVendas[Data], "yyyy-mm" ), 0 -- valor quando não encontra)Funções de informação
DAXBlindando medidas contra contextos inesperados
Comentário Automático =VAR Cresceu = [Var. YoY %] > 0RETURNSWITCH( TRUE(), ISBLANK( [Receita Total] ), "Sem movimento no período", NOT HASONEVALUE( dProduto[Produto] ), "Selecione um produto para ver o detalhe", ISINSCOPE( dProduto[Produto] ) && Cresceu, SELECTEDVALUE( dProduto[Produto] ) & " cresceu " & FORMAT( [Var. YoY %], "0.0%" ), SELECTEDVALUE( dProduto[Produto] ) & " caiu " & FORMAT( ABS([Var. YoY %]), "0.0%" ))