Forum Discussion

JorgePereira's avatar
JorgePereira
Helper I
6 years ago
Solved

Single filter with switch

I have the measurement below:

 

Measure =

Var ValorSelecionado = SELECTEDVALUE(Ordem[Tipo])
Var ValorDataIni = DATE(YEAR([_Data Relatório]),MONTH([_Data Relatório]),1)
Var ValorDataFin = [_Data Relatório]
Var ValorVersao = [_Versão 1]

RETURN

SWITCH(TRUE(),
ValorSelecionado = "AAA" ,
CALCULATE( [Total AAA] , Light[Versão] = ValorVersao , DATESBETWEEN( Light[Data].[Date], ValorDataIni, ValorDataIni)) ,

ValorSelecionado = "BBB" ,
CALCULATE( [Total BBB] , Light[Versão] = ValorVersao , DATESBETWEEN( Light[Data].[Date], ValorDataIni, ValorDataIni)) ,

ValorSelecionado = "CCC" ,
CALCULATE( [Total CCC] , Light[Versão] = ValorVersao , DATESBETWEEN( Light[Data].[Date], ValorDataIni, ValorDataIni)) ,

ValorSelecionado = "DDD" ,
CALCULATE( [Total DDD] , Light[Versão] = ValorVersao , DATESBETWEEN( Light[Data].[Date], ValorDataIni, ValorDataIni)) ,

)

 

Is it possible to make a single filter, not repeating for each case on the switch, something like that below in red?

 

Measure =

Var ValorSelecionado = SELECTEDVALUE(Ordem[Tipo])
Var ValorDataIni = DATE(YEAR([_Data Relatório]),MONTH([_Data Relatório]),1)
Var ValorDataFin = [_Data Relatório]
Var ValorVersao = [_Versão 1]

RETURN

FILTER(Light[Versão] = ValorVersao , DATESBETWEEN( Light[Data].[Date], ValorDataIni, ValorDataIni),

SWITCH(TRUE(),
ValorSelecionado = "AAA" , [Total AAA] ,
ValorSelecionado = "BBB" , [Total BBB] ,
ValorSelecionado = "CCC" , [Total CCC] ,
ValorSelecionado = "DDD" , [Total DDD]

)

  • Anonymous's avatar
    Anonymous
    6 years ago

    HI JorgePereira,

    You can try below measure formula if it meets to your requirement:

    Measure =
    VAR ValorSelecionado =
        SELECTEDVALUE ( Ordem[Tipo] )
    VAR ValorDataIni =
        DATE ( YEAR ( [_Data Relatório] ), MONTH ( [_Data Relatório] ), 1 )
    VAR ValorDataFin = [_Data Relatório]
    VAR ValorVersao = [_Versão 1]
    RETURN
        CALCULATE (
            SWITCH (
                ValorSelecionado,
                "AAA", [Total AAA],
                "BBB", [Total BBB],
                "CCC", [Total CCC],
                "DDD", [Total DDD]
            ),
            FILTER (
                ALLSELECTED ( Light ),
                Light[Versão] = ValorVersao
                    && Light[Data].[Date] IN CALENDAR ( ValorDataIni, ValorDataIni )
            )
        )
    

    Regards,

    Xiaoxin Sheng

2 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    HI JorgePereira,

    You can try below measure formula if it meets to your requirement:

    Measure =
    VAR ValorSelecionado =
        SELECTEDVALUE ( Ordem[Tipo] )
    VAR ValorDataIni =
        DATE ( YEAR ( [_Data Relatório] ), MONTH ( [_Data Relatório] ), 1 )
    VAR ValorDataFin = [_Data Relatório]
    VAR ValorVersao = [_Versão 1]
    RETURN
        CALCULATE (
            SWITCH (
                ValorSelecionado,
                "AAA", [Total AAA],
                "BBB", [Total BBB],
                "CCC", [Total CCC],
                "DDD", [Total DDD]
            ),
            FILTER (
                ALLSELECTED ( Light ),
                Light[Versão] = ValorVersao
                    && Light[Data].[Date] IN CALENDAR ( ValorDataIni, ValorDataIni )
            )
        )
    

    Regards,

    Xiaoxin Sheng

  • JorgePereira yes, see below

     

    Measure =
    
    Var ValorSelecionado = SELECTEDVALUE(Ordem[Tipo])
    Var ValorDataIni = DATE(YEAR([_Data Relatório]),MONTH([_Data Relatório]),1)
    Var ValorDataFin = [_Data Relatório]
    Var ValorVersao = [_Versão 1]
    VAR __filterTable = FILTER(Light[Versão] = ValorVersao , DATESBETWEEN( Light[Data].[Date], ValorDataIni, ValorDataIni),
    
    RETURN
    
    
    SWITCH(TRUE(),
    ValorSelecionado = "AAA" , CALCULATE ([Total AAA] , __filterTable ),
    ValorSelecionado = "BBB" , CALCULATE ([Total BBB] ,__filterTable ),
    ValorSelecionado = "CCC" , CALCULATE ([Total CCC] ,__filterTable ),
    ValorSelecionado = "DDD" , CALCULATE ([Total DDD], __filterTable )
    )

     

    I would  Kudos if my solution helped. 👉 If you can spend time posting the question, you can also make efforts to give Kudos whoever helped to solve your problem. It is a token of appreciation!

    Visit us at https://perytus.com, your one-stop shop for Power BI related projects/training/consultancy.