Forum Discussion
jochendecraene
3 years agoHelper V
Difference between rows with multiple ID's and types
Hi I've created a measure to calculate the difference between rows: Variation = VAR Diff = Tabel1[Meter reading] - CALCULATE(SUM(Tabel1[Meter reading]), ...
- Anonymous3 years ago
Hi jochendecraene ,
You can create a calculated column as below to get it:
Consumption = VAR _predate = CALCULATE ( MAX ( 'Tabel1'[date] ), FILTER ( 'Tabel1', 'Tabel1'[Building] = EARLIER ( Tabel1[Building] ) && 'Tabel1'[type] = EARLIER ( Tabel1[type] ) && 'Tabel1'[ID] = EARLIER ( Tabel1[ID] ) && 'Tabel1'[date] < EARLIER ( Tabel1[date] ) ) ) VAR _pdmeter = CALCULATE ( SUM ( 'Tabel1'[Meter reading] ), FILTER ( 'Tabel1', 'Tabel1'[Building] = EARLIER ( Tabel1[Building] ) && 'Tabel1'[type] = EARLIER ( Tabel1[type] ) && 'Tabel1'[date] = _predate ) ) RETURN IF ( ISBLANK ( _pdmeter ), BLANK (), 'Tabel1'[Meter reading] - _pdmeter )Best Regards
Anonymous
3 years agoNot applicable
Hi jochendecraene ,
You can create a calculated column as below to get it:
Consumption =
VAR _predate =
CALCULATE (
MAX ( 'Tabel1'[date] ),
FILTER (
'Tabel1',
'Tabel1'[Building] = EARLIER ( Tabel1[Building] )
&& 'Tabel1'[type] = EARLIER ( Tabel1[type] )
&& 'Tabel1'[ID] = EARLIER ( Tabel1[ID] )
&& 'Tabel1'[date] < EARLIER ( Tabel1[date] )
)
)
VAR _pdmeter =
CALCULATE (
SUM ( 'Tabel1'[Meter reading] ),
FILTER (
'Tabel1',
'Tabel1'[Building] = EARLIER ( Tabel1[Building] )
&& 'Tabel1'[type] = EARLIER ( Tabel1[type] )
&& 'Tabel1'[date] = _predate
)
)
RETURN
IF ( ISBLANK ( _pdmeter ), BLANK (), 'Tabel1'[Meter reading] - _pdmeter )
Best Regards
- jochendecraene3 years agoHelper V
Thank you so much Anonymous !
Is it possible to give a brief explanation on how this measure works? Any hints on good resources to learn more about this kind of DAX?
- Anonymous3 years agoNot applicable
Hi jochendecraene ,
As you can see the formula below, there are two variables:
- The variable _predate is used to get the previous date which have the same ID, same building and same type and less than current date
- The variable _predate is used to get the sum of [Meter reading] on the previous date
Consumption = VAR _predate = CALCULATE ( MAX ( 'Tabel1'[date] ), FILTER ( 'Tabel1', 'Tabel1'[Building] = EARLIER ( Tabel1[Building] ) && 'Tabel1'[type] = EARLIER ( Tabel1[type] ) && 'Tabel1'[ID] = EARLIER ( Tabel1[ID] ) && 'Tabel1'[date] < EARLIER ( Tabel1[date] ) ) ) VAR _pdmeter = CALCULATE ( SUM ( 'Tabel1'[Meter reading] ), FILTER ( 'Tabel1', 'Tabel1'[Building] = EARLIER ( Tabel1[Building] ) && 'Tabel1'[type] = EARLIER ( Tabel1[type] ) && 'Tabel1'[date] = _predate ) ) RETURN IF ( ISBLANK ( _pdmeter ), BLANK (), 'Tabel1'[Meter reading] - _pdmeter )You can review the following links to learn DAX:
Best Regards
- jochendecraene3 years agoHelper V
thank you very much Anonymous