Ir para conteúdo
  • 0

DAX - Fazer Acumulado com relacionamento Virtual


Anderson2022

Pergunta

  • Alunos

Bom Dia, estou fazendo um cálculo para trazer os valores de um DRE, para o modelo estou tentando usar a função TREATAS, mas para o acumulado não esta funcionando, alguém saberia me informar como posso resolver isso, vou mostrar o código na linha abaixo:
A V2 funciona perfeitamente, porém eu não consigo acumular essa data preciso, acumular mês, porém a medida V2_ACUM não traz

V2 =
Var V_Versao2 = SELECTEDVALUE('Dimensão Versão 2'[Código Versão])
RETURN
Switch(
    TRUE(),
    V_Versao2 = 1,
        CALCULATE(SUM('Fato Real'[Valor 100%]),TREATAS(VALUES('Dimensão Versão 2'[Código Versão]),'Fato Real'[Código Versão]),TREATAS(VALUES('Dimensão Tempo 2'[Data]),'Fato Real'[Mês]))/1000000+0,
 
   V_Versao2 = 2,
        CALCULATE(SUM('Fato Orçamento'[Valor 100%]),TREATAS(VALUES('Dimensão Versão 2'[Código Versão]),'Fato Orçamento'[Código Versão]),TREATAS(VALUES('Dimensão Tempo 2'[Data]),'Fato Orçamento'[Mês]))/1000000+0  
)
V2_ACUM =
Var V_Versao2 = SELECTEDVALUE('Dimensão Versão 2'[Código Versão])
RETURN
Switch(
    TRUE(),
    V_Versao2 = 1,
        CALCULATE(SUM('Fato Real'[Valor 100%]),TREATAS(VALUES('Dimensão Versão 2'[Código Versão]),'Fato Real'[Código Versão]),TREATAS(VALUES('Dimensão Tempo 2'[Data]),'Fato Real'[Mês]),DATESYTD('Dimensão Tempo 2'[Data]))/1000000+0,
 
   V_Versao2 = 2,
        CALCULATE(SUM('Fato Orçamento'[Valor 100%]),TREATAS(VALUES('Dimensão Versão 2'[Código Versão]),'Fato Orçamento'[Código Versão]),TREATAS(VALUES('Dimensão Tempo 2'[Data]),'Fato Orçamento'[Mês]),DATESYTD('Dimensão Tempo 2'[Data]))/1000000+0  
)
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Bruno, eu tive que criar duas dimensões de versões e duas Dimensões de Tempo, pois ele quer ver a versão 1, que pode ser realizado ou trabalho1, e a versão 2 também, e eles querem filtrar mês 1 filtra a versão 1 e o mês dois filtra versão, confuso, mas o cliente quer isso, por isso tentei usar a função TREATASe não ter um relacionamento físico e sim virtual.
Sem ser o acumulado deu certo, o problema deve ser contexto, quando incluo a função datesytd ela não faz o acumulado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Bruno, sim o acumulado é definido no caso como tenho somente a base da fato orçamento, é feito pelo valor 100%, é feito assim se a pessoa selecionar versão 1 a opção trabalho 1 que no caso é orçamento e mês um ela colocar exemplo junho gostaria que acumulasse até junho, agora se ele selecionar versão 2 a opção trabalho 1 e mês dois até exemplo maio tem que acumular na versão 2 até maio.
Agradeço pelo apoio, estou sendo obrigado a usar a função TREATAS pois tenho dois filtros de mês e dois de versão.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Não sei qual o resultado desejado, mas segue uma tentativa.

V2_ACUM = 
Var V_Versao2 = 
    SELECTEDVALUE('Dimensão Versão 2'[Código Versão])
VAR vDataMax = 
    MAX('Dimensão Tempo 2'[Data])
VAR vAno = 
    MAX('Dimensão Tempo 2'[Ano])
VAR vTabelaDataFiltrada = 
    SELECTCOLUMNS(
        FILTER(
            ALL('Dimensão Tempo 2'),
            'Dimensão Tempo 2'[Data] <= vDataMax && 
            'Dimensão Tempo 2'[Ano] = vAno
        ),
        "Data",
        'Dimensão Tempo 2'[Data]
    )
VAR vVersoes = 
    VALUES('Dimensão Versão 2'[Código Versão])
VAR vResultado = 
    SWITCH(
    V_Versao2,
    1,
    COALESCE(
        CALCULATE(
            SUM('Fato Real'[Valor 100%]),
            TREATAS(vVersoes,'Fato Real'[Código Versão]),
            TREATAS(vTabelaDataFiltrada,'Fato Real'[Mês])
        )/1000000,
        0
    ),
   2,
   COALESCE(
        CALCULATE(
            SUM('Fato Orçamento'[Valor 100%]),
            TREATAS(vVersoes,'Fato Orçamento'[Código Versão]),
            TREATAS(vTabelaDataFiltrada,'Fato Real'[Mês])
        )/1000000,
        0
   )
)
RETURN
    vResultado

 

20221207_PRISMA - COMPARATIVOv1.pbix

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