Forum Discussion

CMunteanu's avatar
CMunteanu
Frequent Visitor
3 years ago
Solved

Filtering only when value is selected in slicer

Hello,   I have the following code that is part of a bigger measure:         Measure ORDER2 = Var _Product=SELECTEDVALUE('Slicer'[PRODUCT]) Var _Store=SELECTEDVALUE('SlicerStore'[STORE_ID]) V...
  • OwenAuger's avatar
    3 years ago

    Hello CMunteanu 

    You could use a function like HASONEFILTER to check whether there is a single value filtered on a the slicer columns.

     

    The "negation" of the HASONEFILTER check could then be OR-ed with each of the existing boolean conditions used within CALCULATETABLE for _table1.

     

    Using variables to store these additional checks, the result would be something like this:

     

    VAR _SlicerProduct_SingleFilter =
        HASONEFILTER ( 'Slicer'[PRODUCT] )
    VAR _SlicerStore_SingleFilter =
        HASONEFILTER ( 'SlicerStore'[STORE_ID] )
    VAR _SlicerYear_SingleFilter =
        HASONEFILTER ( 'SlicerYear'[YEAR_ID] )
    VAR _table1 =
        CALCULATETABLE (
            VALUES ( 'OrdersFact'[CUSTOMER_ID] ),
            'OrdersFact'[PRODUCT_ID] = _ProductID || NOT _SlicerProduct_SingleFilter,
            'OrdersFact'[Store] = _StoreID || NOT _SlicerStore_SingleFilter,
            'OrdersFact'[Year] = _YearID || NOT _SlicerYear_SingleFilter
        )

     

     

    I think this would be the safest way to write it. You could also write the conditions like this, assuming there are always at least two values available on the slicers:

     

    'OrdersFact'[PRODUCT_ID] = _ProductID || ISBLANK ( _ProductID )

     

     

    Does the above code work for you?