Forum Discussion

sgsukumaran's avatar
sgsukumaran
Resolver II
7 years ago
Solved

Slicer based on 2 columns

I am trying to create a simple slicer based on 2 columns. All I want is to have a slicer that gives me distinct values from "Open Orders " and "All Open" and filter the measure for revenue based on that slicer.

 

Order NoOpen OrdersAll OpenRevenue
6924659  $131
6924660  $231
6924661  $105
6924662PackedAll Open$75
6924663PackedAll Open$69
6924664PackedAll Open$80
6924665PackedAll Open$43
6924666PackedAll Open$36
6924667PackedAll Open$28
6924668PackedAll Open$71
6924669PackedAll Open$45
6924670PackedAll Open$28
6924671PackedAll Open$41
6924672PackedAll Open$67
6924674LoadedAll Open$49
6924675LoadedAll Open$84
6924676LoadedAll Open$92
6924678LoadedAll Open$101
6924679LoadedAll Open$524
6924680LoadedAll Open$852
6924681LoadedAll Open$963
6924682LoadedAll Open$753
6924683LoadedAll Open$482
6924684LoadedAll Open$579
6924685LoadedAll Open$412
6924687LoadedAll Open$685

 

This is what I did so far. I created a calculated table based on the follwoing logic

 

=
DISTINCT (
UNION (
SELECTCOLUMNS ( Orders, "Open Orders", Orders[Open Orders] ),
SELECTCOLUMNS ( Orders, "Open Orders", Orders[All Open] )
)
)

 

and created a measure to use it as visual filter

 

Slicer:=
VAR COOrders =
VALUES ( 'CalculatedTable 1'[Open Orders] )
RETURN
IF (
ISFILTERED ( 'CalculatedTable 1'[Open Orders] ),
IF (
MIN ( 'Orders'[Open Orders] ) IN COOrders
|| MIN ( 'Orders'[All Open] ) IN COOrders,
1,
0
),
0
)

 

Still it is not working.

  • hi, sgsukumaran 

    You could try this formula to create a measure for [Revenue]

    Measure = var _table=SUMMARIZE(Orders,Orders[Order No],Orders[All Open],Orders[Open Orders],"_Revebue",SUM(Orders[Revenue]),"tag",[Slicer]) return
    SUMX(FILTER(_table,[tag]=1),[_Revebue])

    Result:

    Best Regards,

    Lin

5 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi sgsukumaran ,

    Try creating new table  like this with this Formula

     

    Slicer = DISTINCT(Union(values(Sheet16[Open Orders]),VALUES(Sheet16[All Open])))

    Then create a new measure in your existing table  with this formula

    Measure = if(min('Sheet16'[All Open])In values(Slicer[new Slicer])|| Min('Sheet16'[Open Orders])In values(Slicer[new Slicer]),1,blank())

    or

     

    You can also download a Hierarchy Slicer from Marketplace in your Home tab.

     

     

    Thanks,

    Tejaswi

     

    • sgsukumaran's avatar
      sgsukumaran
      Resolver II

      Anonymous  - That is exactly what i have except value is passed in variable.

      • v-lili6-msft's avatar
        v-lili6-msft
        Community Support

        hi, sgsukumaran 

        I have test on my side, it works well.

        I just do some adjustment in the measure

        Slicer = 
        VAR COOrders =
            VALUES ( 'CalculatedTable 1'[Open Orders] )
        RETURN
            IF (
                ISFILTERED ( 'CalculatedTable 1'[Open Orders] ),
                IF (
                    MIN ( 'Orders'[Open Orders] ) IN COOrders
                        || MIN ( 'Orders'[All Open] ) IN COOrders,
                    1,
                    0
                ),
                1
            )

        Then drag this measure into visual level filter and set is "1". and use new table field as a slicer.

         

        here is my sample pbix file, please try it.

        and if you have any other problem, please show it with screenshots.

         

        Best Regards,

        Lin