Forum Discussion

LucMarv's avatar
LucMarv
Icon for Helper I rankHelper I
4 years ago
Solved

Run a block of code within a SWITCH()

Hi, 

All the examples of a switch include a very simple structure... 

For example:

= SWITCH([Month], 1, "January", 2, "February", 3, "March", 4, "April" , 5, "May", 6, "June", 7, "July", 8, "August" , 9, "September", 10, "October", 11, "November", 12, "December" , "Unknown month number" )

 

I have two blocks of code, and I only want to run one, depending on a condition. How do I run a BLOCK of code within a SWITCH()?

 

MEASURE_NAME =

SWITCH(

TRUE(),

 

SELECTEDVALUE(grouping[group]) = "all",

var total = CALCULATE(sum(data[value]), FILTER(data, [sex] <> "Persons" && ALL(grouping)))

var females = calculate(sum(data[value]), FILTER(data, [sex] = "Female" && ALL(grouping)))

 

,

SELECTEDVALUE(grouping[group]) <> "all",

var total = CALCULATE(sum(data[value]), FILTER(data, [sex] <> "Persons" ))

var females = calculate(sum(data[value]), FILTER(data, [sex] = "Female"))

)

 

RETURN

format(DIVIDE(females, total), "0.0%")

 

 

It seems to complain about the ',' in between the blocks, indicating to me that it struggles to evaluate multiple rows when the condition in the switch is true. I tried to put the blocks (in bold) in (  ) but that does not help.

 

Any suggestions? 

  • Try writing them as two seperate measures then using the measures in the switch.

    Measure_Name =
    VAR _Seletcion =
        SELECTEDVALUE ( grouping[group] )
    RETURN
        SWITCH (
            TRUE (),
            _Selection = "all", [All Measure],
            _Selection <> "all", [Other Measure]
        )
    
  • LucMarv's avatar
    LucMarv
    4 years ago

    Yeah, this solution works and I have implemented this. I am not a big fan of it though, because I dont really like creating so many measures. I have a relatively simple app, and have created over 100 measures already... 

    It works, but its not neat.

    Thanks for the guidance!

2 Replies

  • Try writing them as two seperate measures then using the measures in the switch.

    Measure_Name =
    VAR _Seletcion =
        SELECTEDVALUE ( grouping[group] )
    RETURN
        SWITCH (
            TRUE (),
            _Selection = "all", [All Measure],
            _Selection <> "all", [Other Measure]
        )
    
    • LucMarv's avatar
      LucMarv
      Icon for Helper I rankHelper I

      Yeah, this solution works and I have implemented this. I am not a big fan of it though, because I dont really like creating so many measures. I have a relatively simple app, and have created over 100 measures already... 

      It works, but its not neat.

      Thanks for the guidance!