Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more.
Get startedGrow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.
Hi all,
I have a nice DAX-question. I need to know the current stock, based on startstock and the mutations of that exact day. So my startdate is 230606 on that day I have stock changes, and a start amount. As you can See my start amount in row 2 is 27987 then I have some mutations for that day, and it the outcome of my StartStock and my mutations for that day, is the start amount for the next day. So 27987 -1125 - 1072,25 + 2118 = 27907,75 (start amount for 230607)
So when in my matrix nothing is expanded and I only see my article I need to see my cumulative as in row 2 right now. When I expand my Artikel to Cat1 and Cat2 I need to see the mutations only. I have tried a lot of things and I am almost there. For now I have the right outcome when I only use Artikel and Cat2. When I add Cat1 I also get Cumulatives for Cat1 but when I Expand 1 it shows the right numbers for 2.
This is the measure I tried:
Test =
VAR EersteDatumVoorStartVoorraad =
CALCULATE ( MIN ( 'mdw DimDatum'[Datum] ), ALL ( 'mdw DimDatum' ) )
VAR LaatsteDagSeq =
MIN ( 'mdw DimDatum'[_SeqDagNr] ) - 1
VAR LaatsteDatumVoorStartVoorraad =
CALCULATE (
MAX ( 'mdw DimDatum'[Datum] ),
ALL ( 'mdw DimDatum' ),
'mdw DimDatum'[_SeqDagNr] = LaatsteDagSeq
)
VAR EersteDatum =
MIN('mdw DimDatum'[Datum])
VAR LaatsteDatum =
MAX('mdw DimDatum'[Datum])
VAR Result =
CALCULATE (
[Amount],
DATESBETWEEN (
'mdw DimDatum'[Datum],
EersteDatumVoorStartVoorraad,
LaatsteDatumVoorStartVoorraad
),
ALL ( 'mdw DimDatum'[Datum] )
)
Var Result2 =
SWITCH (
TRUE (),
NOT ( ISFILTERED (Fact[Cat1] ) && ISFILTERED ( Fact[Cat2]) ), Result,
ISFILTERED ( 'mdw DimArtikel'[ArtikelNaam] ) || NOT ( ISFILTERED (Fact[Cat1]) && ISFILTERED ( Fact[Cat2]) ), CALCULATE([Mutations],DATESBETWEEN('mdw DimDatum'[Datum],EersteDatum,LaatsteDatum)),
BLANK ()
)
Return
IF(Result2 = BLANK(), [Mutations], Result2)
Who could help me out?
My Expexted Outcome:
Artikel | 20230606 | 20230607 | 20230608 | 20230609 | 20230610 | 20230611 | 20230612 | ||
Artikel 1a | 27987 | 27907,75 | 31048,5 | 32251,25 | 33679 | 38179 | 40179 | ||
Sales | |||||||||
Sales1 | -1125 | -405 | -225 | ||||||
Sales2 | -1072,25 | -1072,25 | -1072,25 | -1072,25 | |||||
Production | Line1 | 2000 | 2000 | ||||||
Line2 | 2118 | 4618 | 2500 | 2500 | 2500 | ||||
StartStock | Startstock | 27987 |
My Data:
_KeyArtikel | _KeyDatum | Cat2 | BehoefteHoeveelheid | Cat1 |
1a | 20230606 | Line2 | 2118 | Productie |
1a | 20230606 | Sales1 | -135 | Sales |
1a | 20230606 | Sales1 | -135 | Sales |
1a | 20230606 | Sales1 | -135 | Sales |
1a | 20230606 | Sales1 | -135 | Sales |
1a | 20230606 | Sales1 | -90 | Sales |
1a | 20230606 | Sales1 | -45 | Sales |
1a | 20230606 | Sales1 | -90 | Sales |
1a | 20230606 | Sales1 | -90 | Sales |
1a | 20230606 | Sales1 | -90 | Sales |
1a | 20230606 | Sales1 | -180 | Sales |
1a | 20230606 | StartStock | 876 | StartStock |
1a | 20230606 | StartStock | 876 | StartStock |
1a | 20230606 | StartStock | 7515 | StartStock |
1a | 20230606 | StartStock | 9450 | StartStock |
1a | 20230606 | StartStock | 1530 | StartStock |
1a | 20230606 | StartStock | 7740 | StartStock |
1a | 20230606 | Sales2 | -1072,25 | Sales |
1a | 20230607 | Sales1 | -90 | Sales |
1a | 20230607 | Sales2 | -1072,25 | Sales |
1a | 20230607 | Sales1 | -90 | Sales |
1a | 20230607 | Sales1 | -180 | Sales |
1a | 20230607 | Sales1 | -45 | Sales |
1a | 20230607 | Line2 | 2118 | Productie |
1a | 20230607 | Line2 | 2500 | Productie |
1a | 20230608 | Sales1 | -135 | Sales |
1a | 20230608 | Sales2 | -1072,25 | Sales |
1a | 20230608 | Sales1 | -90 | Sales |
1a | 20230608 | Line2 | 2500 | Productie |
1a | 20230609 | Sales2 | -1072,25 | Sales |
1a | 20230609 | Line2 | 2500 | Productie |
1a | 20230610 | Line1 | 2000 | Productie |
1a | 20230610 | Line2 | 2500 | Productie |
1a | 20230611 | Line1 | 2000 | Productie |
Solved! Go to Solution.
Thanks for the replies
. Unfortunately that does not work with the 2 dimensions I have to add. Just found the sollution myself. Will share it here:
VAR EersteDatumVoorStartVoorraad =
CALCULATE (
MIN ( 'mdw Fact[FormattedDate] ),
ALL ( ‘Dim Datum’ ),
ALL ( 'mdw Fact )
)
VAR MinStock =
IF (
SELECTEDVALUE ( 'mdw DimDatum'[Datum] ) = EersteDatumVoorStartVoorraad,
CALCULATE (
SUM ( 'mdw Fact[amount] ),
'mdw Fact[VerwijzingCategorie] = "StartStock"
),
BLANK ()
)
VAR Mutaties =
IF (
SELECTEDVALUE ( 'mdw DimDatum'[Datum] ) >= EersteDatumVoorStartVoorraad,
SUM ( 'mdw fact[amount] ),
BLANK ()
)
VAR LaatsteDagSeq =
MIN ( 'mdw DimDatum'[_SeqDagNr] ) - 1
VAR LaatsteDatumVoorStartVoorraad =
CALCULATE (
MAX ( 'mdw DimDatum'[Datum] ),
ALL ( 'mdw DimDatum' ),
'mdw DimDatum'[_SeqDagNr] = LaatsteDagSeq
)
VAR ResultNaVandaag =
CALCULATE (
[amount],
DATESBETWEEN (
'mdw DimDatum'[Datum],
EersteDatumVoorStartVoorraad,
LaatsteDatumVoorStartVoorraad
),
ALL ( 'mdw DimDatum'[Datum] )
)
VAR Result =
SWITCH (
TRUE (),
NOT ( ISFILTERED ( 'mdw DimArtikel'[ArtikelNaam] ) )
&& NOT ( ISFILTERED ( 'mdw fact[VerwijzingCategorie] ) )
&& NOT ( ISFILTERED ( 'mdw fact[Verwijzing] ) )
&& SELECTEDVALUE ( 'mdw DimDatum'[Datum] ) = EersteDatumVoorStartVoorraad, MinStock, // Heeft betrekking op Totaal van Eerste beschikbare datum
NOT ( ISFILTERED ( 'mdw DimArtikel'[ArtikelNaam] ) )
&& NOT ( ISFILTERED ( 'mdw fact[VerwijzingCategorie] ) )
&& NOT ( ISFILTERED ( 'mdw fact[Verwijzing] ) ), ResultNaVandaag, // Heeft betrekking op Total van Overige datums
ISFILTERED ( 'mdw DimArtikel'[ArtikelNaam] )
&& NOT ( ISFILTERED ( 'mdw fact[VerwijzingCategorie] ) )
&& SELECTEDVALUE ( 'mdw DimDatum'[Datum] ) = EersteDatumVoorStartVoorraad, MinVoorhanden, // Heeft betrekking op Artikelnaam van Eerste beschikbare datum
ISFILTERED ( 'mdw DimArtikel'[ArtikelNaam] )
&& NOT ( ISFILTERED ( 'mdw FactBehoeftePlanRegel'[VerwijzingCategorie] ) ), ResultNaVandaag, // Heeft betrekking op Artikelnaam van Overige datums
NOT ( ISFILTERED ( 'mdw FactBehoeftePlanRegel'[Verwijzing] ) ), Mutaties, // Heeft betrekking op VerwijzingCategorie van Alle datums
Mutaties // Heeft betrekking op Verwijzing van Alle datums
)
RETURN
Result
Thanks for the replies
. Unfortunately that does not work with the 2 dimensions I have to add. Just found the sollution myself. Will share it here:
VAR EersteDatumVoorStartVoorraad =
CALCULATE (
MIN ( 'mdw Fact[FormattedDate] ),
ALL ( ‘Dim Datum’ ),
ALL ( 'mdw Fact )
)
VAR MinStock =
IF (
SELECTEDVALUE ( 'mdw DimDatum'[Datum] ) = EersteDatumVoorStartVoorraad,
CALCULATE (
SUM ( 'mdw Fact[amount] ),
'mdw Fact[VerwijzingCategorie] = "StartStock"
),
BLANK ()
)
VAR Mutaties =
IF (
SELECTEDVALUE ( 'mdw DimDatum'[Datum] ) >= EersteDatumVoorStartVoorraad,
SUM ( 'mdw fact[amount] ),
BLANK ()
)
VAR LaatsteDagSeq =
MIN ( 'mdw DimDatum'[_SeqDagNr] ) - 1
VAR LaatsteDatumVoorStartVoorraad =
CALCULATE (
MAX ( 'mdw DimDatum'[Datum] ),
ALL ( 'mdw DimDatum' ),
'mdw DimDatum'[_SeqDagNr] = LaatsteDagSeq
)
VAR ResultNaVandaag =
CALCULATE (
[amount],
DATESBETWEEN (
'mdw DimDatum'[Datum],
EersteDatumVoorStartVoorraad,
LaatsteDatumVoorStartVoorraad
),
ALL ( 'mdw DimDatum'[Datum] )
)
VAR Result =
SWITCH (
TRUE (),
NOT ( ISFILTERED ( 'mdw DimArtikel'[ArtikelNaam] ) )
&& NOT ( ISFILTERED ( 'mdw fact[VerwijzingCategorie] ) )
&& NOT ( ISFILTERED ( 'mdw fact[Verwijzing] ) )
&& SELECTEDVALUE ( 'mdw DimDatum'[Datum] ) = EersteDatumVoorStartVoorraad, MinStock, // Heeft betrekking op Totaal van Eerste beschikbare datum
NOT ( ISFILTERED ( 'mdw DimArtikel'[ArtikelNaam] ) )
&& NOT ( ISFILTERED ( 'mdw fact[VerwijzingCategorie] ) )
&& NOT ( ISFILTERED ( 'mdw fact[Verwijzing] ) ), ResultNaVandaag, // Heeft betrekking op Total van Overige datums
ISFILTERED ( 'mdw DimArtikel'[ArtikelNaam] )
&& NOT ( ISFILTERED ( 'mdw fact[VerwijzingCategorie] ) )
&& SELECTEDVALUE ( 'mdw DimDatum'[Datum] ) = EersteDatumVoorStartVoorraad, MinVoorhanden, // Heeft betrekking op Artikelnaam van Eerste beschikbare datum
ISFILTERED ( 'mdw DimArtikel'[ArtikelNaam] )
&& NOT ( ISFILTERED ( 'mdw FactBehoeftePlanRegel'[VerwijzingCategorie] ) ), ResultNaVandaag, // Heeft betrekking op Artikelnaam van Overige datums
NOT ( ISFILTERED ( 'mdw FactBehoeftePlanRegel'[Verwijzing] ) ), Mutaties, // Heeft betrekking op VerwijzingCategorie van Alle datums
Mutaties // Heeft betrekking op Verwijzing van Alle datums
)
RETURN
Result
Your expected outcome seems to be achievable by putting your data as is into a matrix visual?
Hi,
Thanks for your reply, but not exactly. What I would like to see is the totals as well.
So That is the startstock, with the mutations of that day. Makes the total for next day.
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
User | Count |
---|---|
84 | |
84 | |
66 | |
63 | |
62 |
User | Count |
---|---|
199 | |
120 | |
110 | |
79 | |
69 |