1
resposta

Dúvida na função HASONEFILTER

Pq no segundo argumento da função HASONEFILTER foi usado a função MAX? Confesso que fiquei confuso com a utilização dessa função, principalmente pq o valores utilizados são texto.

1 resposta

As aulas andam confusas e meio esquisitas mesmo (agora que entrou mais na área de programação dentro do BI), tive que pesquisar sobre isso e encontrei um instrutor com vídeo gratuito no YouTube que falou a respeito, se encontrar o link aqui edito o post. Segue o que entendi:

O IF do DAX é meio estranho para quem esta acostumado com outras linguagens, mas aqui basicamente você passa 3 parâmetros:

if(
    HASONEFILTER(Tb_Vendedores[Nome]),
    MAX(Tb_Vendedores[Nome]),
    "Todos os Vendedores"
)

Nesse caso cada linha é um parâmetro então:

1º Linha: Verifica se é True ou False, essa função retorna "true" se tiver um filtro.

2º Linha: Caso true mostra o que tiver aqui, nesse caso vai mostrar o resultado do Max() que vai buscar o "maior valor" dentro da tabela já filtrada... é esquisito pois ele esta buscando o "maior valor" em uma lista de string, é o tipo de coisa que se espera um erro acontecendo mas funciona aqui no Power BI. Ele busca o "maior nome" (?) e como esta filtrado para exibir apenas o nome de um dos vendedores, acaba retornando isso.

3º Linha: Caso retorne False ali na primeira linha (que é quando a função detecta que não foi utilizado filtros) ele mostra o valor que estiver aqui.

Por isso que essa medida se comporta dessa maneira, perceba que o Max() não esta dentro do HasOneFilter().