Forum Discussion

Pastor84's avatar
Pastor84
Regular Visitor
2 years ago

Why this switch does not work?

Hi everyone,

 

I have included a SWITCH function in a slider to alternate a visualization between a measure "A", a measure "B" and the sum of both if nothing is selected in the slider. The functions is as follows:

 

BF_Slicer =
IF(ISCROSSFILTERED(Balances[Concepto]),
SWITCH(true(),
VALUES(Balances[Concepto]) = "Curr. Acc.", [BF_CA],
VALUES(Balances[Concepto]) = "Term dep.", [BF_TD],
0), [BF_CA]+[BF_TD])
 
If I put this measure in a Tachometer visualization it works. However, If I put it in a Circle graph, it does not work when nothing is selected. (If there is something selected in the slider, there is no problem). The error I get  says it was expecting one single value and I provided several values.
 
Any idea what is wrong?

1 Reply

  • From the description of your problem, it seems the issue arises from the multi-value nature of the `VALUES` function when there's no selection in the slicer. This is especially true for visuals that expect single values.


    1. When a single item is selected from the slicer:
    - `ISCROSSFILTERED` returns TRUE and we enter the `SWITCH` function.
    - `VALUES` will return a table with a single value, hence the comparisons you're making with `VALUES(Balances[Concepto])` are valid.

    2. When no item is selected in the slicer:
    - `ISCROSSFILTERED` returns FALSE.
    - The formula goes to the else-part, which is `[BF_CA]+[BF_TD]`, and there shouldn’t be a problem here as it’s just a sum of two measures.

    3. When multiple items are selected:
    - This is probably where the problem arises. `VALUES` returns a table of multiple values, which isn’t valid for direct comparisons like `VALUES(Balances[Concepto]) = "Curr. Acc."`. If the visual is expecting a single value, it'll throw an error.

    
    BF_Slicer =
    VAR SelectedValueCount = COUNTROWS(VALUES(Balances[Concepto]))
    RETURN
    IF(
    SelectedValueCount = 0, [BF_CA] + [BF_TD],
    IF(
    SelectedValueCount = 1,
    SWITCH(TRUE(),
    VALUES(Balances[Concepto]) = "Curr. Acc.", [BF_CA],
    VALUES(Balances[Concepto]) = "Term dep.", [BF_TD],
    BLANK()
    ),
    BLANK() -- This line handles multiple selections, you can modify this to return a specific value or just blank
    )
    )