Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It 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.
User | Count |
---|---|
107 | |
88 | |
81 | |
76 | |
71 |
User | Count |
---|---|
112 | |
105 | |
96 | |
74 | |
66 |