Logo
banner

Blogs

Power BI > How to filter all the data by TODAY, by default?

, September 10, 2021 252 Views

Ever wondered how we can filter the Power BI report to show only Today’s data by default but at the same time give the flexibility to change the Date filter?

The approach we as developers generally take is – create a calculated column IsToday in the Calendar table and have it return “Yes” for today’s date and “No” for all other dates and then apply the filter selecting “Yes” to show today’s data by default. The problem with this approach is, when filtered on “Yes”, it also filters the Data slicer to showcase only 1 date, i.e. Today in this case, and in order to change the Date filter, the user first needs to set the IsToday filter to “All”. But now, we can easily achieve this with more flexibility using Calculation Groups.

This is how our final outcome will look like:


By default, here we are filtering the data by today’s date. So, whenever a user opens the report, he would be able to see only today’s data and if he filters the date, he would be able to see the data falling within the selected date range.

With these expectations set, let’s jump in to understand the steps we need to follow to create the calculation group for the default values. To achieve the above requirement, we need Tabular Editor to be installed on the machine. If you haven’t downloaded Tabular Editor yet, please click here to download the latest version.

Now, let’s move to the Power BI report. Open Power BI Desktop & go to External Tools and open Tabular Editor.


Once you open the Tabular Editor, go to the left panel where you can right-click on the Tables >
Create New > Calculation Group or you can directly press Alt+7.


Now, modify the name of the Calculation Group. Here, we have defined it as FilterByToday.

After creating the calculation group, expand it and you can see there is a column called Name. We’ll modify the name as per our requirements to display the column in Power BI and so we will change it to Options.


Now, let’s create the two calculated items, 1) NO and 2) YES.

The idea is, when filter is applied on NO, users would be able to see all data (here, as per the filtered date range in the Date Slicer). And when the filter is applied on YES, users would be able to see data as per the default values (here, today’s data), and if the date range from the slicer is changed, the data would be filtered as per the date range, giving it the priority.

To create the calculation items right click on the calculation items and select New Calculation Item.
For the NO, let’s define the calculation as follows:

NO = SELECTEDMEASURE()

NO will do nothing. It will not apply any filter.  It is used by expressions for calculation items to reference the measure that is currently in context.

Now, let’s create YES and define the below calculation as follows:

YES =
IF ( 
    CALCULATE ( 
        ISCROSSFILTERED ( 'DATE' ) , 
        ALLSELECTED() 
    ) , 
    SELECTEDMEASURE() ,
     CALCULATE ( 
        SELECTEDMEASURE() , 
        FILTER ( 'DATE' , 'DATE'[DATE] = TODAY () ) 
    ) 
)

So, the measure here is really simple. If the date range is filtered in the slicer or is cross filtered, it will return SELECTEDMEASURE(), i.e the measure without any contextual filters, and if the date slicer is not filtered, SELECTEDMEASURE() with the TODAY() filter is returned.

After creating both the calculation items, let’s save the report to see the change in the Power BI report. Now, close the Tabular Editor and go back to the report. In the table section, you can see
the FilterByToday table with column Options


Now, plot the Options in the filter pane and select YES as shown below. After applying the filter, hide and lock the filter. Now, by default you would be able to see today’s data and the working will be as under –


This approach opens up a wide range of possibilities. This is what we have tried. If you can come up with another such cool trick, please do share the link in the comments below.

Happy Default-Filtering!

mm

Inkey

INKEY is your solution partner.
Our focus is to deliver you in-time intelligent innovative solutions ("key") for the problems in hand. Maintaining a quality standard right from the inception of a project is our top most priority.

Our team of talented professionals will execute your projects with dedication and excellence. We take ownership and accountability for the effort that goes into meeting our client’s needs.

Years of experience and proven success of delivering innovative custom solutions.

More posts by

Leave a Reply

Your email address will not be published. Required fields are marked *