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:
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: