cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
elliottriley
Frequent Visitor

Creating dynamic measures using a slicer to change date values

We have a fact table that shows one row per visit.  Against each visit is a date, visitID, an outletID, outletname and some other numbers.

 

What we want to do is use a slicer to specify a date range using the date in the table as the source.  We then want to have a measure that dynamically calculates the latest date (based within the slicer selection) by outletID within that table and show only the latest outletID record within the date chosen in the slicer and then add on two other measure columns calculated from column1 and column 2.

 

 

Fact table as below

VisitID   Date            OutletID  OutletName   Column1  Column2

123        01/01/2018   65            Name A             1             1

143        20/01/2018   65            Name A             0             1

145        21/01/2018   34            Name B             1             2 

165        02/02/2018   65            Name A             0             1

171        15/02/2018   34            Name B             1             1

 

 

Can anyone help with the DAX as what we have tried seems to take ages to run on desktop and only runs if the date range is really narrow.  Then when published to the service it errors and says that it exceeds the resources.  There are 500k rows in the fact table and it will grow over time.  If we needed to we could restrict the date range chosen in the slicer if that is possible?

 

Is there a best practice way of doing this?

1 ACCEPTED SOLUTION
Greg_Deckler
Super User
Super User

This may be what you have already but if you have a table with OutletID in it then you could calculate the last date as follows:

 

Measure = 
VAR __maxDate = MAX([Date])
RETURN
MAXX(FILTER('Table',[Date]<=__maxDate),[Date])

The thought here is that if you have OutletID in the table, then your fact table is already constrained by OutletID for each row in the table. So you just need to find the MAXX of the Date for that already filtered (context) table.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

1 REPLY 1
Greg_Deckler
Super User
Super User

This may be what you have already but if you have a table with OutletID in it then you could calculate the last date as follows:

 

Measure = 
VAR __maxDate = MAX([Date])
RETURN
MAXX(FILTER('Table',[Date]<=__maxDate),[Date])

The thought here is that if you have OutletID in the table, then your fact table is already constrained by OutletID for each row in the table. So you just need to find the MAXX of the Date for that already filtered (context) table.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
November 2022 Update

Check it Out!

Click here to read more about the November 2022 updates!

Power BI Dev Camp Session 27

Ted's Dev Camp

This session walks through creating a new Azure AD B2C tenant and configuring it with user flows and custom policies.

Health and Life Sciences Power BI User Group

Health and Life Sciences Power BI User Group

Power BI specialists at Microsoft have created a community user group where customers in the provider, payor, pharma, health solutions, and life science industries can collaborate.