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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
TK12345
Resolver I
Resolver I

How to use cumulative total on highest level in matrix and mutations in sub levels

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  20230606202306072023060820230609202306102023061120230612
Artikel 1a  2798727907,7531048,532251,25336793817940179
 Sales        
  Sales1-1125-405-225    
  Sales2-1072,25-1072,25-1072,25-1072,25   
 ProductionLine1    20002000 
  Line221184618250025002500  
 StartStockStartstock27987      



My Data: 

_KeyArtikel_KeyDatumCat2BehoefteHoeveelheidCat1
1a20230606Line22118Productie
1a20230606Sales1-135Sales
1a20230606Sales1-135Sales
1a20230606Sales1-135Sales
1a20230606Sales1-135Sales
1a20230606Sales1-90Sales
1a20230606Sales1-45Sales
1a20230606Sales1-90Sales
1a20230606Sales1-90Sales
1a20230606Sales1-90Sales
1a20230606Sales1-180Sales
1a20230606StartStock876StartStock
1a20230606StartStock876StartStock
1a20230606StartStock7515StartStock
1a20230606StartStock9450StartStock
1a20230606StartStock1530StartStock
1a20230606StartStock7740StartStock
1a20230606Sales2-1072,25Sales
1a20230607Sales1-90Sales
1a20230607Sales2-1072,25Sales
1a20230607Sales1-90Sales
1a20230607Sales1-180Sales
1a20230607Sales1-45Sales
1a20230607Line22118Productie
1a20230607Line22500Productie
1a20230608Sales1-135Sales
1a20230608Sales2-1072,25Sales
1a20230608Sales1-90Sales
1a20230608Line22500Productie
1a20230609Sales2-1072,25Sales
1a20230609Line22500Productie
1a20230610Line12000Productie
1a20230610Line22500Productie
1a20230611Line12000Productie
1 ACCEPTED SOLUTION
TK12345
Resolver I
Resolver I

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

View solution in original post

3 REPLIES 3
TK12345
Resolver I
Resolver I

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

lbendlin
Super User
Super User

Your expected outcome seems to be achievable by putting your data as is into a matrix visual?

 

lbendlin_0-1686344165662.png

 

Hi, 

Thanks for your reply, but not exactly. What I would like to see is the totals as well. Knipsel.PNG
So That is the startstock, with the mutations of that day. Makes the total for next day.

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.