Ir para conteúdo
  • 0

DAX - Fazer Acumulado com relacionamento Virtual


Anderson2022

Pergunta

  • Membros

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
  • Membros

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
  • Membros

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
  • Membros

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...