Forum Discussion
Akhil_1411
5 years agoHelper IV
Dax optimization - Formula help
Hi, The below logic is taking longer time to execute but giving me the right result though. Can anyone tell me where am i going wrong?🙄
- 5 years ago
Hi Akhil_1411
From my reading of your measures, I would recommend changing to a single measure instead.
The reasons for performance issues look to be:
- Filtering tables rather than filtering columns. e.g. the two-column table created by ALL or 'DPO BSEG', . It's always best to filter columns individually where possible.
- Nesting of FILTERs by evaluating [Overdue Days.] within [0-10 Days aging].
- Multiple evaluations of [Overdue Days.]
- The SELECTEDVALUE functions on rows 2-3 of [Overdue Days.] are redundant, since if a single value is visible, then it is the maximum value anyway. So you can just use MAX expression for both of these.
Here is how I would propose to rewrite as a single measure, bearing in mind that I haven't been able to test it in your model:
0 - 10 Days aging = VAR DaysAgingMin = 0 VAR DaysAgingMax = 10 VAR _endofmonth = MAX ( 'Date Table'[End of the Month] ) VAR _selecteddate = MAX ( 'Date Table'[Date] ) VAR DueDateLowerBound = _endofmonth - DaysAgingMax VAR DueDateUpperBound = _endofmonth - DaysAgingMin RETURN CALCULATE ( SUM ( 'DPO BSEG'[WRBTR] ), KEEPFILTERS ( 'DPO BSEG'[AUGDT] = BLANK () || _selecteddate < 'DPO BSEG'[AUGDT] ), KEEPFILTERS ( _selecteddate >= 'DPO BSEG'[_Due Date] ), KEEPFILTERS ( 'DPO BSEG'[_Due Date] <= DueDateUpperBound ), KEEPFILTERS ( 'DPO BSEG'[_Due Date] >= DueDateLowerBound ) )My interpretation of what your original measure (and hopefully this measure) does is this (please correct me if I'm wrong):
Calculate the sum of WRBTR where:
- Due Date is on or before Selected Date
- AND Clearing Date (AUGDT) is either after Selected Date or blank
- AND Due Date is between 0-10 days before the End of the Month (being the same month as Selected Date)
I have combined the various filter conditions from your original measures into a single measure.
Does this produce the correct result, and does it perform better?
Regards,
Owen
Akhil_1411
5 years agoHelper IV
Can anyone please help here? Need some of your suggestions please.