Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreShape the future of the Fabric Community! Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions. Take survey.
Hi,
I have some DAX measures that are used in a table, they are running out of memory. Is there a better way to do this? I want to display this data in a table. What I want to do is measure the number of days between the latest date in the slicer to the invoice date. I have this measure to do this:
DaysSinceInvoice =
VAR MaxDate =
CALCULATE(
MAX('Data DateDimension'[TheDate]),
ALLSELECTED('Data DateDimension'[Date]))
VAR Result = DATEDIFF(Min([InvoiceDate]), MaxDate, DAY)
RETURN CONVERT(Result, INTEGER)
Then I have three measures that uses the above measure.
0To30Days =
VAR Result = IF(Min('Data InvoiceFact'[Owing]) > 0 && [DaysSinceInvoice] >= 0 && [DaysSinceInvoice] <= 30, Min('Data InvoiceFact'[Owing], 0)
Return Result
30To60Days =
VAR Result = IF(Min('Data InvoiceFact'[Owing]) > 0 && [DaysSinceInvoice] >= 30 && [DaysSinceInvoice] <= 60, Min('Data InvoiceFact'[Owing], 0)
Return Result
60To90Days =
VAR Result = IF(Min('Data InvoiceFact'[Owing]) > 0 && [DaysSinceInvoice] >= 60 && [DaysSinceInvoice] <= 90, Min('Data InvoiceFact'[Owing], 0)
Return Result
This is displayed in a table. Is there a more efficient way to do this? I am using a measure because I want to base the calculation on the date slicer selection.
You can try storing the data in variables so that the calculations only have to be done once, e.g.
0To30Days =
VAR DaysSinceInvoice = [DaysSinceInvoice]
VAR DaysOwing =
MIN ( 'Data InvoiceFact'[Owing] )
VAR Result =
IF (
DaysOwing > 0
&& DaysSinceInvoice >= 0
&& DaysSinceInvoice <= 30,
DaysOwing,
0
)
RETURN
Result
User | Count |
---|---|
25 | |
21 | |
20 | |
13 | |
13 |
User | Count |
---|---|
40 | |
28 | |
28 | |
22 | |
21 |