In PowerBI or Tableau or any BI solution by defaults when you have multiple slicers, the filter conditions is always, AND, in this particular case, the user want to filter a schedule based on a start date OR the end date OR the activity status, basically how to reproduce the following Primavera Filter using DAX
Using the normal slicers will not work as it will simply show the activities where all the conditions met, instead we will use some DAX techniques (disconnected slicers and filter using the result of a measure) to get a new behavior.
Let’s build a simple data mode.
1-The main table is task: it contains Activity ID, Activity Status, Start, Finish
2- add a date Table, Start_Date, don’t link it to any table, use it in a slicer , the table is generated using Powerquery,
3- add another Date Table, Mstdate, don’t link it either, use it in a slicer
4- add Activity status Table, don’t link it, , use it in a slicer
5- add this measure
Filter_measure = CALCULATE(COUNTROWS(task),
FILTER(task, ([Start] <= LASTDATE(Start_Date[Date])
&& [Start]>= FIRSTDATE(Start_Date[Date]))
([finish] <= LASTDATE(Finish_Date[Date])
&& [finish]>= FIRSTDATE(Finish_Date[Date]))
IF(NOT(ISFILTERED(‘Activity status'[Activity status])),BLANK(),’task'[Activity status]IN ALLSELECTED(‘Activity Status'[Activity Status]))))
Add this measure to the matrix visual as a filter only, and make it not equal null, and voila