This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. We're covering it all. You won't want to miss it.
Learn moreLevel up your Power BI skills this month - build one visual each week and tell better stories with data! Get started
For context, it is about ordering stock from multiple factories, where each has its own Minimum Order Quantity (MOQ) by Item Number. Each order may be split to go to different sites, as long as the total MOQ is met. I only need to calculate the order requirements for one selected month, which I can manipulate using a slicer.
I have an existing DAX model with four tables. I will number the Tables and then list the important columns under each, along with the data type in brackets, and will indicate relationships from the main fact table next to the applicable column name.
1. Dimension:
-Company Code (text)
-Inventory Site Code (text)
-Item Number (text)
-Variant (text)
-Multiple Quantity (integer)
-DimKey (text)
2. Vendors:
-Vendor (text)
-MOQ by Item (integer)
-VendorKey (text)
3. Calendar:
-Yearmonth (integer)
-YMIndex (integer)
4. Summary:
-PO/RB (text)
-Yearmonth (integer), with a relationship to the Yearmonth column in the Calendar table
-DimKey (text), with a relationship to the DimKey column in the Dimension table
-VendorKey (text), with a relationship to the Vendors table
-Qty (integer)
I then have the following existing measure: [Qty] = CALCULATE(SUM(Summary[Qty]))
I need help with writing a new measure that will calculate how much of the Qty I need to bring into the current month from future Yearmonth values for a particular Item Number but across all the other column values in the Dimension table (i.e. ALLEXCEPT Dimension[Item Number]), to the extent that I can make up a certain MOQ for an item - let's say that value is 500. So in the example above, I need to pull forward requirements out to 202403 to achieve the MOQ value.
There's a further complication, in that I want to pull forward only as much as I need to achieve the 500 target, provided that all the quantities I order are divisible by the Multiple Quantity column in the Dimension table. That is, if pulling forward requirements out to 202402 gave me 450 but adding 202403 gave me 600, I need to trim down the total number I'm pulling forward in a representative cut across all the variants from the 202403 value to get the total as close to 500 as possible, while meeting MOQ and each line needs to be divisible by the Multiple Quantity for the DimKey being evaluated.
Sample data from 'Calendar' table:
Yearmonth | YMIndex |
202312 | 1 |
202401 | 2 |
202402 | 3 |
202403 | 4 |
202404 | 5 |
202405 | 6 |
202406 | 7 |
202407 | 8 |
Sample data in 'Vendors' table:
Vendor | MOQ by Item | VendorKey |
Vendor 1 | 500 | V1 |
Vendor 2 | 200 | V2 |
Sample data in 'Summary' table:
DimKey | Yearmonth | Qty | VendorKey |
Site1AAAT | 202402 | 16 | V1 |
Site1AAAT | 202403 | 16 | V1 |
Site1AAAT | 202404 | 8 | V1 |
Site1AAAT | 202405 | 16 | V1 |
Site1AAAT | 202406 | 16 | V1 |
Site1AAAT | 202407 | 8 | V1 |
Site1AAAW | 202402 | 32 | V1 |
Site1AAAW | 202403 | 24 | V1 |
Site1AAAW | 202404 | 32 | V1 |
Site1AAAW | 202405 | 32 | V1 |
Site1AAAW | 202406 | 24 | V1 |
Site1AAAW | 202407 | 16 | V1 |
Site1AAASQ | 202312 | 8 | V1 |
Site1AAASQ | 202401 | 24 | V1 |
Site1AAASQ | 202402 | 32 | V1 |
Site1AAASQ | 202403 | 40 | V1 |
Site1AAASQ | 202404 | 32 | V1 |
Site1AAASQ | 202405 | 40 | V1 |
Site1AAASQ | 202406 | 32 | V1 |
Site1AAASQ | 202407 | 24 | V1 |
Site1AAAL | 202312 | 8 | V1 |
Site1AAAL | 202401 | 24 | V1 |
Site1AAAL | 202402 | 24 | V1 |
Site1AAAL | 202403 | 32 | V1 |
Site1AAAL | 202404 | 32 | V1 |
Site1AAAL | 202405 | 32 | V1 |
Site1AAAL | 202406 | 24 | V1 |
Site1AAAL | 202407 | 24 | V1 |
Site1AAALW | 202401 | 16 | V1 |
Site1AAALW | 202402 | 16 | V1 |
Site1AAALW | 202403 | 24 | V1 |
Site1AAALW | 202404 | 24 | V1 |
Site1AAALW | 202405 | 24 | V1 |
Site1AAALW | 202406 | 16 | V1 |
Site1AAALW | 202407 | 8 | V1 |
Site1AAAPR | 202406 | 8 | V1 |
Site1AAAG | 202401 | 16 | V1 |
Site1AAAG | 202402 | 16 | V1 |
Site1AAAG | 202403 | 16 | V1 |
Site1AAAG | 202404 | 16 | V1 |
Site1AAAG | 202405 | 24 | V1 |
Site1AAAG | 202406 | 16 | V1 |
Site1AAAG | 202407 | 8 | V1 |
Site1AAARK | 202405 | 8 | V1 |
Site1AAARK | 202406 | 8 | V1 |
Site1AAAZ | 202402 | 16 | V1 |
Site1AAAZ | 202403 | 24 | V1 |
Site1AAAZ | 202404 | 16 | V1 |
Site1AAAZ | 202405 | 24 | V1 |
Site1AAAZ | 202406 | 16 | V1 |
Site1AAAZ | 202407 | 8 | V1 |
Site1AAAJ | 202407 | 8 | V1 |
Site1AAAFW | 202403 | 8 | V1 |
Site1AAAFW | 202404 | 16 | V1 |
Site1AAAFW | 202405 | 16 | V1 |
Site1AAAFW | 202406 | 8 | V1 |
Site1AAAFW | 202407 | 8 | V1 |
Site1AAAK | 202403 | 8 | V1 |
Site1AAAK | 202405 | 8 | V1 |
Site1AAAK | 202407 | 8 | V1 |
Site1AAAMB | 202401 | 8 | V1 |
Site1AAAMB | 202402 | 8 | V1 |
Site1AAAMB | 202403 | 16 | V1 |
Site1AAAMB | 202404 | 8 | V1 |
Site1AAAMB | 202405 | 16 | V1 |
Site1AAAMB | 202406 | 16 | V1 |
Site1AAAMB | 202407 | 8 | V1 |
Site1AAAEQ | 202401 | 8 | V1 |
Site1AAAEQ | 202402 | 8 | V1 |
Site1AAAEQ | 202404 | 8 | V1 |
Site1AAAEQ | 202405 | 8 | V1 |
Site1AAAEQ | 202406 | 8 | V1 |
Site2AAAT | 202407 | 8 | V1 |
Site2AAAWZ | 202405 | 8 | V1 |
Site2AAAWZ | 202407 | 8 | V1 |
Site2AAAW | 202405 | 8 | V1 |
Site2AAAW | 202407 | 16 | V1 |
Site2AAAD | 202406 | 8 | V1 |
Site2AAAD | 202407 | 24 | V1 |
Site2AAASQ | 202405 | 16 | V1 |
Site2AAASQ | 202406 | 8 | V1 |
Site2AAASQ | 202407 | 24 | V1 |
Site2AAAXE | 202405 | 8 | V1 |
Site2AAAXE | 202406 | 16 | V1 |
Site2AAAXE | 202407 | 16 | V1 |
Site2AAAL | 202405 | 8 | V1 |
Site2AAAL | 202406 | 8 | V1 |
Site2AAAL | 202407 | 24 | V1 |
Site2AAAC | 202405 | 8 | V1 |
Site2AAAC | 202406 | 8 | V1 |
Site2AAAC | 202407 | 16 | V1 |
Site2AAALW | 202405 | 8 | V1 |
Site2AAALW | 202406 | 8 | V1 |
Site2AAALW | 202407 | 24 | V1 |
Site2AAAPR | 202405 | 16 | V1 |
Site2AAAPR | 202406 | 8 | V1 |
Site2AAAPR | 202407 | 16 | V1 |
Site2AAAG | 202405 | 8 | V1 |
Site2AAAG | 202406 | 16 | V1 |
Site2AAAG | 202407 | 24 | V1 |
Site2AAARK | 202402 | 8 | V1 |
Site2AAARK | 202403 | 8 | V1 |
Site2AAARK | 202405 | 16 | V1 |
Site2AAARK | 202406 | 16 | V1 |
Site2AAARK | 202407 | 16 | V1 |
Site2AAAZ | 202403 | 8 | V1 |
Site2AAAZ | 202405 | 16 | V1 |
Site2AAAZ | 202406 | 16 | V1 |
Site2AAAZ | 202407 | 24 | V1 |
Site2AAAJ | 202405 | 16 | V1 |
Site2AAAJ | 202406 | 16 | V1 |
Site2AAAJ | 202407 | 24 | V1 |
Site2AAAFW | 202405 | 8 | V1 |
Site2AAAFW | 202406 | 16 | V1 |
Site2AAAFW | 202407 | 24 | V1 |
Site2AAAK | 202407 | 16 | V1 |
Site2AAAMB | 202406 | 8 | V1 |
Site2AAAMB | 202407 | 16 | V1 |
Site2AAAEQ | 202407 | 8 | V1 |
Sample data in 'Dimension' table:
Item Number | Inventory Site Code | Variant | Multiple Quantity |
AAA | Site1 | T | 8 |
AAA | Site1 | W | 8 |
AAA | Site1 | SQ | 8 |
AAA | Site1 | L | 8 |
AAA | Site1 | LW | 8 |
AAA | Site1 | PR | 8 |
AAA | Site1 | G | 8 |
AAA | Site1 | RK | 8 |
AAA | Site1 | Z | 8 |
AAA | Site1 | J | 8 |
AAA | Site1 | FW | 8 |
AAA | Site1 | K | 8 |
AAA | Site1 | MB | 8 |
AAA | Site1 | EQ | 8 |
AAA | Site2 | T | 8 |
AAA | Site2 | WZ | 8 |
AAA | Site2 | W | 8 |
AAA | Site2 | D | 8 |
AAA | Site2 | SQ | 8 |
AAA | Site2 | XE | 8 |
AAA | Site2 | L | 8 |
AAA | Site2 | C | 8 |
AAA | Site2 | LW | 8 |
AAA | Site2 | PR | 8 |
AAA | Site2 | G | 8 |
AAA | Site2 | RK | 8 |
AAA | Site2 | Z | 8 |
AAA | Site2 | J | 8 |
AAA | Site2 | FW | 8 |
AAA | Site2 | K | 8 |
AAA | Site2 | MB | 8 |
AAA | Site2 | EQ | 8 |
Check out the April 2026 Power BI update to learn about new features.
Sign up to receive a private message when registration opens and key events begin.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
| User | Count |
|---|---|
| 30 | |
| 23 | |
| 23 | |
| 17 | |
| 15 |
| User | Count |
|---|---|
| 63 | |
| 36 | |
| 30 | |
| 23 | |
| 22 |