Olá, pessoal!
Vocês já precisaram filtrar no Power BI mais de uma coluna em 1 único slicer?
Neste artigo irei ensinar como criar um único slicer que aplique um filtro em 2 ou mais colunas.
O Power BI possibilita realizar filtros com slicers para um única coluna, mas existem cenários em que poderia é necessário e pode ser muito útil unificar as informações de várias colunas em um único filtro. Infelizmente, hoje isso ainda não é possível no Power BI por meio dos visuais padrões, mas você pode usar uma técnica específica de modelagem de dados para desenvolver este slicer único.
Para ensiná-los como criar, irei exemplificar utilizando um caso simples de dados de movimentações de contas bancárias de clientes. A tabela usada como base de dados MovConta apresenta as seguintes informações: NomePagador, NomeRecebedor, Valor. Portanto, neste caso, nosso objetivo será criar um slicer único para as colunas NomePagador e NomeRecebedor, dessa forma, será possível aplicar um filtro que retorne o valor filtrado Pedro em ambas as colunas, como é possível observar na imagem a seguir.
Passo 1. Criar uma coluna calculada de granularidade
O primeiro passo necessário para implementar a solução é criar uma coluna calculada na tabela de MovConta concatenando as colunas NomeRecebedor e NomePagador, a qual definirá a granularidade para o filtro. Concatenar as colunas é importante pois os valores na coluna NomePagador podem se repetir em NomeRecebedor. Em casos em que não há risco de correr repetição de valores, a concatenação das colunas não é necessária.
Nome = COMBINEVALUES (" |", MovConta[NomePagador], MovConta[NomeRecebedor])
Passo 2. Criar TabelaFiltro A coluna calculada Nome é necessária para criar um relacionamento com a tabela calculada Filtro que mostra os valores possíveis para nomes em uma única coluna. Esta tabela possui uma coluna TabelaFiltro[Filtro] será uma lista de valores únicos de nomes no slicer, enquanto TabelaFiltro[Nome] será uma lista de todas as combinações possíveis de nomes de pagadores e recebedores para realizar o relacionamento com a coluna MovConta[Nome]. TabelaFiltro = DISTINCT ( UNION ( SELECTCOLUMNS ( MovConta, "Nome", MovConta[Nome], "Filtro", MovConta[NomePagador] ), SELECTCOLUMNS ( MovConta, "Nome", MovConta[Nome], "Filtro", MovConta[NomeRecebedor] ) ) )
Passo 3. Modelagem de dados
Ao realizar o relacionamento entre TabelaFiltro[Nome] e MovConta[Nome], este terá uma cardinalidade muitos para muitos e uma única direção de filtro, em que a TabelaFiltro filtre a tabela MovConta. Porém, esta solução não funciona bem para todos os modelos, como acontece no nosso caso.
Portanto, nestes casos, é melhor considerar uma abordagem baseada em relacionamentos mais fortes e confiáveis como um para muitos, muitos para um e um para um.
Para isso, é preciso criar uma tabela calculada intermediária com os valores únicos de TabelaFiltro[Nome] usando a seguinte expressão:
TabelaNome = ALLNOBLANKROW ( TabelaFiltro[Nome] )
Em seguida, será necessário relacionar TabelaFiltro com TabelaNome com cardinalidade muitos para um e cruzar direção filtro para ambos. Após isso, deve-se relacionar TabelaNome com MovConta com cardinalidade um para muitos e cruzar a direção o filtro para único.
Ao habilitar o filtro bidirecional entre as tabelas TabelaFiltro eTabelaNome, você obtém o mesmo resultado de uma relação de cardinalidade muitos para muitos com desempenho aprimorado.
A solução descrita neste artigo é útil sempre que você deseja mostrar em uma única coluna os valores que estão presentes em diferentes colunas de uma tabela. Para o desenvolvimento deste artigo, utilizei como base de estudo o artigo Creating a slicer that filters multiple columns in Power BI, em que é apresentado um caso utilizando três colunas para criação de um filtro único. Espero que essa dica seja útil e possa ajuda-los em projetos futuros proporcionando uma melhor experiência para o usuário e simplificando a interface do relatório de vocês.
Abraço a todos e até a próxima! 🚀😉