Ir para conteúdo
  • 0

Calculo DAX que filtra vários parâmetros de dimensões diferentes


Filipe Chagas
Ir para solução Solucionado por Edson Igari ,

Pergunta

  • Alunos

Pessoal, boa tarde.

To com um calculo DAX que estou batendo cabeça a um tempo, porem não consegui resolve-lo ainda. Vou descrever o cenário.

Tenho uma fato de contas a pagar que vem com 3 colunas, data, valor e previsão. Hoje na carga todos os campos vêm populado com os valores.
Preciso que no DAX ele faça o seguinte calculo:
1. Quando a data for menor ou igual a data atual e o campo previsao for igual a N (Não), o valor tem que ser 0.
2. Quando a data for menor ou igual a data atual e o campo previsao for igual a S (Sim), retorna o valor do campo.
3. Quando a data atual for maior que a data atual e o campo previsao for igual a S ou N (Sim ou Não), retorna o valor do campo. 

Deixar abaixo o código que eu tentei fazer, porém sem sucesso.

Total a Pagar 2 =

//var previsao_n = calculate(0,
//              ftt_contas_pagar_prev[previsao] = "N",
//              dcalendario[Data Completa] <= NOW())
 
//var previsao_s = calculate(sum(ftt_contas_pagar_prev[vl_devido]),
//              (dcalendario[Data Completa] > NOW() , ftt_contas_pagar_prev[previsao] in {"N","S"}) ||
//              (dcalendario[Data Completa] <= NOW() , ftt_contas_pagar_prev[previsao] = "S"))
 
//var valor = if  ( dcalendario[Data Completa] <= NOW(), previsao_n, previsao_s)
 
//return valor

Obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
1 hora atrás, Filipe Chagas disse:

Irmão, boa tarde. 

Muito obrigado pela força. Mas quando colei o código e retornou esse erro ai. Inclui apenas uma vírgula aonde esta marcado.

erro.png

Comi bola rs. Perdão. Segue:
Total a Pagar = 
var valor = sum(ftt_contas_pagar_prev[vl_devido])
 var vData = SELECTEDVALUE(dcalendario[Data Completa] )
var resultado = 
switch(
    true(),
    vData  <= TODAY() && SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "N",0 
    vData  <= TODAY() && SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "S",resultado,
    vData >= TODAY() && (SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "N" || SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) "S"),resultado
return resultado

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Filipe Chagas, veja se atende. Caso sim, peço a gentileza de marcar minha resposta como solução.

Total a Pagar = 
var valor = sum(ftt_contas_pagar_prev[vl_devido])
 
var resultado = 
switch(
    true(),
    dcalendario[Data Completa] <= TODAY() && SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "N",0 
    dcalendario[Data Completa] <= TODAY() && SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "S",resultado,
    dcalendario[Data Completa] >= TODAY() && (SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "N" || SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) "S"),resultado
return resultado

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 hora atrás, Edson Igari disse:

@Filipe Chagas, veja se atende. Caso sim, peço a gentileza de marcar minha resposta como solução.

Total a Pagar = 
var valor = sum(ftt_contas_pagar_prev[vl_devido])
 
var resultado = 
switch(
    true(),
    dcalendario[Data Completa] <= TODAY() && SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "N",0 
    dcalendario[Data Completa] <= TODAY() && SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "S",resultado,
    dcalendario[Data Completa] >= TODAY() && (SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "N" || SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) "S"),resultado
return resultado

Irmão, boa tarde. 

Muito obrigado pela força. Mas quando colei o código e retornou esse erro ai. Inclui apenas uma vírgula aonde esta marcado.

erro.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Edson,

Fiz alguns ajustes na sua medida, inclusão de ',', ')' e alterei o resultado dentro da variavel resultado para o campo valor. Funcionou como uma uva. Vou deixar aqui a fórmula com essas alterações e também o print. 

Para ser sincero, acho que vou acabar resolvendo isso direto no ETL, assim fica mais leve dentro do Power BI. Mas me ensinou muito essa forma de DAX que desconhecia.

Novamente, muito obrigado.

Total a Pagar 2 = //sum(ftt_contas_pagar_prev[vl_devido])
 
var valor = sum(ftt_contas_pagar_prev[vl_devido])
 var vData = SELECTEDVALUE(dcalendario[Data Completa] )
var resultado =
switch(
    true(),
    vData  <= TODAY() && SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "N",valor,
    vData  <= TODAY() && SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "S",0,
    vData >= TODAY() && (SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "N" || SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "S"),valor)
 
return resultado

 

 

formula dax.PNG

Editado por Filipe Chagas
  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
18 minutos atrás, Filipe Chagas disse:

Edson,

Fiz alguns ajustes na sua medida, inclusão de ',', ')' e alterei o resultado dentro da variavel resultado para o campo valor. Funcionou como uma uva. Vou deixar aqui a fórmula com essas alterações e também o print. 

Para ser sincero, acho que vou acabar resolvendo isso direto no ETL, assim fica mais leve dentro do Power BI. Mas me ensinou muito essa forma de DAX que desconhecia.

Novamente, muito obrigado.

Total a Pagar 2 = //sum(ftt_contas_pagar_prev[vl_devido])
 
var valor = sum(ftt_contas_pagar_prev[vl_devido])
 var vData = SELECTEDVALUE(dcalendario[Data Completa] )
var resultado =
switch(
    true(),
    vData  <= TODAY() && SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "N",valor,
    vData  <= TODAY() && SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "S",0,
    vData >= TODAY() && (SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "N" || SELECTEDVALUE(ftt_contas_pagar_prev[previsao]) = "S"),valor)
 
return resultado

 

 

formula dax.PNG

Opa, que bom que deu certo. Tamo junto.

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