Forum Discussion
Subtract two unit quantities based on date slicer
I want to subtract the amount of units in inventory for different product types over a given timeframe. I've created the following dummy data to illustrate:
The user should be able to select a timeframe based on a relative "between" date slicer like the one below.
The end goal is to show a column chart that displays the change in units on the Y axis and the product type on the X axis, as shown below. For example, if the date slicer shows 2/1/2019 to 4/1/2019, the "bus" category should show a net change of 65 (i.e. 86-21=65).
How can I set this up? Is it possible to create a measure that responds to the dates in the slicer?
Thank you!
Hi Anonymous ,
Add the following measure to your report:
Inventory Variation = VAR StartDate = MIN ( Inventory[Date] ) VAR EndDate = MAX ( Inventory[Date] ) RETURN CALCULATE ( SUM ( Inventory[Inventory (Units)] ); FILTER ( ALLSELECTED ( Inventory[Date] ); Inventory[Date] = EndDate ) ) - CALCULATE ( SUM ( Inventory[Inventory (Units)] ); FILTER ( ALLSELECTED ( Inventory[Date] ); Inventory[Date] = StartDate ) )Final result is as follows:
Regards,
MFelix
14 Replies
- MFelixSuper User
Hi Anonymous ,
Add the following measure to your report:
Inventory Variation = VAR StartDate = MIN ( Inventory[Date] ) VAR EndDate = MAX ( Inventory[Date] ) RETURN CALCULATE ( SUM ( Inventory[Inventory (Units)] ); FILTER ( ALLSELECTED ( Inventory[Date] ); Inventory[Date] = EndDate ) ) - CALCULATE ( SUM ( Inventory[Inventory (Units)] ); FILTER ( ALLSELECTED ( Inventory[Date] ); Inventory[Date] = StartDate ) )Final result is as follows:
Regards,
MFelix
- AnonymousNot applicable
Works perfectly. Thank you MFelix !
- edhansCommunity Champion
Anonymous , the solution provided by MFelix works if your slicer is based on your dates in the inventory table. If you use a slicer based on dates in a Date table, which is the direction I took, the following would work, assuming your inventory table had one entry per month per category, as your sample data did.
Inventory Change = VAR FirstMonth = CALCULATE( MIN(Dates[Month]), ALLSELECTED(Dates[Date]) ) VAR SecondMonth = CALCULATE( MAX(Dates[Month]), ALLSELECTED(Dates[Date]) ) RETURN CALCULATE( MAX('Inventory Levels'[Inventory]), Dates[Month] = SecondMonth ) - CALCULATE( MAX('Inventory Levels'[Inventory]), Dates[Month] = FirstMonth )
- jtownsend21Responsive Resident
Anonymous, I know I am late to the party on this one, but here is a slightly different version which might help if you find yourself facing some performance issues with the filter statements.
NET CHANGE TEST = VAR _LAST = CALCULATE( SUM('Inventory'[Units]), LASTDATE('Date'[Date]) ) VAR _FIRST = CALCULATE( SUM('Inventory'[Units]), FIRSTDATE('Date'[Date]) ) RETURN _LAST - _FIRST- AnonymousNot applicable
Appreciate it, thank you!
- hejszyszkiFrequent Visitor
Hi guys, what about when new product appears? I am struggling to change formula to include also this aspect. Do you have any ideas? I think i understand why its not included in formula output ( cuz its not finding product name value to subtract) but no idea how to change to do so.
MFelix edhans any ideas?
Best Regards,
PP- MFelixSuper User
HI hejszyszki ,
Measures are based in context so if the product is added to the visualization the calculation shoud be done has expected however what probably is hapenning is since you only have the value on the first month the variation gives a blank value and does not retur any values in the visualzation.
- hejszyszkiFrequent Visitor
Sounds reasonable MFelix , so my idea now to resolve this is to update the formula with something like IF blank then return "end month" value? Am i thinking correctly?
IAR Comparison=
VAR StartDate = MIN ( 'IAR Extract'[Version] )
VAR EndDate = MAX ( 'IAR Extract'[Version] )
RETURN CALCULATE ( SUM ( 'IAR Extract'[Financial Risk Value PUP] ),
FILTER (ALLSELECTED('IAR Extract'[Version] ), 'IAR Extract'[Version] = EndDate )
) - CALCULATE (
SUM ( 'IAR Extract'[Financial Risk Value PUP] ),
FILTER ( ALLSELECTED ( 'IAR Extract'[Version] ), 'IAR Extract'[Version] = StartDate ) )
And to refer, thats the formula ive been using...
Best regards
PP