Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.

Reply
RickF83
Frequent Visitor

Dax

I have a table which has purchase and sales for each item. I need a Dax formula which looks at an item and the earliest date which has "Purchase" (so this is the starting point) and then any add sales to deduct from total and if purchase add that on. This will allow me to identify out of stock days.

 

Can anyone help?

 

RickF83_0-1673871798189.png

 

3 REPLIES 3
Greg_Deckler
Community Champion
Community Champion

@RickF83 What is your expected output? If I am interpreting this correctly, you could do something like this:

Measure =
  VAR __Item = MAX('Table'[Item No_]
  VAR __CurrentDate = MAX('Table'[Document Date])
  VAR __FirstDate = MINX(FILTER(ALL('Table'),[Item No_] = __Item && [PurchoseORSale] = "Purchase"),[Document Date])
  VAR __Purchases = SUMX(FILTER(ALL('Table'),[Document Date] >= __FirstDate && [Document Date] <= __CurrentDate && [PurchaseORSale] = "Purchase"),[Invoiced Quantity])
  VAR __Sales = SUMX(FILTER(ALL('Table'),[Document Date] >= __FirstDate && [Document Date] <= __CurrentDate && [PurchaseORSale] = "Sale"),[Invoiced Quantity])
  VAR __Result = __Purchase - __Sales
RETURN
  __Result


Follow on LinkedIn
@ 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!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler its coming up with an error. 

 

The syntax for 'VAR' is incorrect. (DAX( VAR __Item = MAX('Item Ledger Entry'[Item No_] VAR __CurrentDate = MAX('Item Ledger Entry'[Document Date]) VAR __FirstDate = MINX(FILTER(ALL('Item Ledger Entry'),[Item No_] = __Item && [PurchoseORSale] = "Purchase"),[Document Date]) VAR __Purchases = SUMX(FILTER(ALL('Item Ledger Entry'),[Document Date] >= __FirstDate && [Document Date] <= __CurrentDate && [PurchaseORSale] = "Purchase"),[Invoiced Quantity]) VAR __Sales = SUMX(FILTER(ALL('Item Ledger Entry'),[Document Date] >= __FirstDate && [Document Date] <= __CurrentDate && [PurchaseORSale] = "Sale"),[Invoiced Quantity]) VAR __Result = __Purchase - __SalesRETURN __Result)).

 

the expected out put is to see where items have gone out of stock, so I can fill in the OOS Days and calculate predicted lost sales.

@RickF83 Missed a paren:

Measure =
  VAR __Item = MAX('Table'[Item No_])
  VAR __CurrentDate = MAX('Table'[Document Date])
  VAR __FirstDate = MINX(FILTER(ALL('Table'),[Item No_] = __Item && [PurchoseORSale] = "Purchase"),[Document Date])
  VAR __Purchases = SUMX(FILTER(ALL('Table'),[Document Date] >= __FirstDate && [Document Date] <= __CurrentDate && [PurchaseORSale] = "Purchase"),[Invoiced Quantity])
  VAR __Sales = SUMX(FILTER(ALL('Table'),[Document Date] >= __FirstDate && [Document Date] <= __CurrentDate && [PurchaseORSale] = "Sale"),[Invoiced Quantity])
  VAR __Result = __Purchase - __Sales
RETURN
  __Result


Follow on LinkedIn
@ 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!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
FabCon Global Hackathon Carousel

FabCon Global Hackathon

Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!

September Power BI Update Carousel

Power BI Monthly Update - September 2025

Check out the September 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.