Ir para conteúdo
  • 0

Classificar dados de uma Fato de forma dinâmica em uma tabela


Gustavo Dassie
Ir para solução Solucionado por Gustavo Dassie ,

Pergunta

  • Alunos

Bom dia a todos! Estou empacado em uma resolução e sei que deve ser simples de resolver, mas como estou há 1 ano basicamente mexendo com Tableau, as coisas vai enferrujando.. kkk (e por favor, não usem Tableau. Power BI é bem melhor).

Mas ao que interessa.

Eu tenho uma fato com os registros de beneficiarios e eu preciso classifica-los da seguinte forma:

SWITCH(
    TRUE(),
    [Variação da Coluna T] <= -0.5, "1. Menor que -50%",
    [Variação da Coluna T] <= -0.3, "2. Menor que -30%",
    [Variação da Coluna T] <= 0.1, "3. Entre 1 E -1%",
    [Variação da Coluna T] <= 0.25, "4. Até 25%",
    [Variação da Coluna T] <= 0.5, "5. Até 50%",
    [Variação da Coluna T] > 0.5, "6. Acima de 50%",
    "-"
)

Pra poder exibir em um visual de tabela, +- da seguinte forma:

image.png.e6e82ea1331d5942aeeb6935bfe74a24.png 

Acontece que esse valor simulado é feito através de parâmetros, onda a pessoa seleciona o % que deseja simular de aumento. E será comparado com esse Produto da Coluna T, Coluna K e Coluna Q e a formatação condicional das cores de Vermelho (1), Marrom (2 e 3), Laranja (4), Verde Claro (5) e Verde Escuro (6).

Mas, quando for alterado esse valor simulado, eu preciso que os beneficiários sejam classificados de forma dinâmica também e mudar entre as classificações.

Alguém poderia me ajudar?

Segue o PBIX de amostra. Nele deixei a forma que construí a classificação apenas a fim de entendimento, mas o beneficiário não pode ser classificado de forma fixa como está mas sim de forma dinâmica, para que, quando ele mudar de Classificação, ele altere a coluna de Beneficiários.

Qualquer dúvida, estou à disposição!

Simulador - NT 3 - Copia.pbix

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Em 17/08/2024 em 11:28, Bruno Abdalla de Souza disse:

Acredito que não tenha como fazer o que deseja, se é que entendi o seu problema. Você diz que um determinado beneficiário pode ter sua classificação alterada conforme se alteram os filtros e a taxa de simulação. Estou correto?

Se sim, não como alterar uma tabela dinamicamente a partir de um filtro no visual. Lembre que as tabelas/colunas (seja do Power Query ou via DAX) são processadas apenas quando os dados são atualizados e não interagindo com os filtros de visuais ou laterais.

Fiquei com várias dúvidas. Precisaria tirar estas dúvidas para entender melhor e ver se há alguma alternativa. Talvez a opção seja criar uma tabela auxiliar com estas classificações que vc precisa e usar DAX para dinamicamente modificar os dados dos visuais. Acredito que a classificação como coluna dentro da tabela fato não seja o lugar mais apropriado.

Bom dia Bruno! Sim, fazer essa coluna na fato não resolveria o problema visto que eu necessitava que fosse dinâmico, porém consegui chegar em uma solução.

 

Vou postar aqui o passo a passo, caso alguém tenha a mesma dúvida:

Primeiro, criei uma tabela de Classificação, conforme o print:

image.png.dc50313ed60cb23aef2c63d888bda1c8.png

Nela eu informei a classificação, o valor mínimo e o valor máximo para cada uma delas e adicionei um cd_classificação

Feito isso, criei a seguinte medida em DAX (vou adicionar os comentários de cada etapa na própria medida):

_Beneficiarios =
VAR vEtapa1 = //Nesta etapa, eu seleciono apenas os beneficiários ativos contidos na dimensão de beneficiários
    FILTER(
        ALL(D_NT_BENEFICIARIO)
        , [DT_VIGENCIA_FIM] = BLANK()
    )
VAR vEtapa2 = //Aqui, eu pego apenas a coluna de identificação de cada beneficiário (sk_nt_beneficiario)
    DISTINCT(SELECTCOLUMNS(vEtapa1, D_NT_BENEFICIARIO[sk_nt_beneficiario]))
VAR vEtapa3 = //Nesta etapa, verifico quais beneficiários da dimensão estão contidos na Fato
    FILTER(
        F_NT_NOTATECNICA
        , F_NT_NOTATECNICA[sk_nt_beneficiario] IN vEtapa2
    )
VAR vEtapa4 = (1 + SELECTEDVALUE('TX_SIMULACAO'[TX_SIMULACAO])) // Essa etapa é onde irá pegar o parâmetro da taxa de simulação e soma 1, para que possamos multiplicar mais à frente.
VAR vEtapa5 = //Nesta etapa, a fim de performance, faço uma agregação da fato apenas para pegar o beneficiário e o valor de cada uma das colunas que são necessárias no visual, e já com a taxa de simulação.
    SUMMARIZE(
        F_NT_NOTATECNICA
        , [sk_nt_beneficiario]
        , "Valor Faturado", SUM(F_NT_NOTATECNICA[vl_faturamento])
        , "Valor Coluna T", SUM(F_NT_NOTATECNICA[D_NT_NOTATECNICA.coluna_t])
        , "Valor Coluna K", SUM(F_NT_NOTATECNICA[D_NT_NOTATECNICA.coluna_k])
        , "Valor Coluna Q", SUM(F_NT_NOTATECNICA[D_NT_NOTATECNICA.coluna_q])
        , "Valor Total * tx", SUM(F_NT_NOTATECNICA[vl_faturamento]) * vEtapa4
    )
VAR vEtapa6 = //Aqui é criado a classificação de acordo com os cd_classificação determinado na tabela de Classificação.
    ADDCOLUMNS(
        vEtapa5
        , "Rank", ([Valor Total * tx] / [Valor Coluna T]) - 1
        , "Classificação",
                    SWITCH(
                        TRUE(),
                        ([Valor Total * tx] / [Valor Coluna T]) - 1 <= -0.5, 1,
                        ([Valor Total * tx] / [Valor Coluna T]) - 1 <= -0.3, 2,
                        ([Valor Total * tx] / [Valor Coluna T]) - 1 <= -0.01, 7,
                        ([Valor Total * tx] / [Valor Coluna T]) - 1 <= 0.01, 3,
                        ([Valor Total * tx] / [Valor Coluna T]) - 1 <= 0.25, 4,
                        ([Valor Total * tx] / [Valor Coluna T]) - 1 <= 0.5, 5,
                        ([Valor Total * tx] / [Valor Coluna T]) - 1 > 0.5, 6
                    )
    )
VAR vEtapa7 = //E aqui eu faço o vínculo da Classificação da Etapa 7 com a tabela de Classificação (aqui está com o nome de Simulação)
    ADDCOLUMNS(
        'Simulação'
        , "Total Beneficiários", COUNTROWS(FILTER(vEtapa6, [Classificação] = 'Simulação'[cd_classificacao]))
    )
           
RETURN
SUMX(vEtapa7, [Total Beneficiários]) //Para o total de beneficiários, retorno o SUMX trazendo da Classificação da Etapa 7

E com isso, fazendo para cada um dos campos desejados, cheguei no resultado final esperado:

image.png.90e0bc8460cc3c1eb982efa8bb2a7adc.png

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Acredito que não tenha como fazer o que deseja, se é que entendi o seu problema. Você diz que um determinado beneficiário pode ter sua classificação alterada conforme se alteram os filtros e a taxa de simulação. Estou correto?

Se sim, não como alterar uma tabela dinamicamente a partir de um filtro no visual. Lembre que as tabelas/colunas (seja do Power Query ou via DAX) são processadas apenas quando os dados são atualizados e não interagindo com os filtros de visuais ou laterais.

Fiquei com várias dúvidas. Precisaria tirar estas dúvidas para entender melhor e ver se há alguma alternativa. Talvez a opção seja criar uma tabela auxiliar com estas classificações que vc precisa e usar DAX para dinamicamente modificar os dados dos visuais. Acredito que a classificação como coluna dentro da tabela fato não seja o lugar mais apropriado.

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...