Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
7 years ago
Solved

Cumulative per month

Hi! 
I have a issue with my cumulative Profit & Loss subtotals. What I want is show the cumulative data per month (just in that month).

In the beggining I do this mensure to my cumulative subtotal and it works (data in Portuguese-BR):

_Subtotal = 

VAR Valor = CALCULATE(SUM(Dados_[Valor]))
VAR Receita = CALCULATE(SUM(Dados_[Valor]);FILTER(ALL(Dados_);Dados_[dre_titulo]="= Receita Líquida"))
VAR Margem = CALCULATE(SUM(Dados_[Valor]);FILTER(ALL(Dados_);Dados_[dre_titulo]="= Margem Bruta"))
VAR ResultadoO = CALCULATE(SUM(Dados_[Valor]);FILTER(ALL(Dados_);Dados_[dre_titulo]="= Resultado Operacional"))
VAR ResultadoL = CALCULATE(SUM(Dados_[Valor]);FILTER(ALL(Dados_);Dados_[dre_titulo]="= Resultado Líquido"))
VAR EBTIDA = CALCULATE(SUM(Dados_[Valor]);FILTER(ALL(Dados_);Dados_[dre_titulo]="= EBTIDA"))
RETURN 

IF(ISFILTERED(Dados_[Nome])||ISFILTERED(Dados_[descrição_conta])||ISFILTERED(Dados_[dre_sub-titulo]);Valor;
    IF(SELECTEDVALUE(Dados_[dre_titulo])="= Receita Líquida";Receita;
        IF(SELECTEDVALUE(Dados_[dre_titulo])="= Margem Bruta";Receita+Margem;
            IF(SELECTEDVALUE(Dados_[dre_titulo])="= Resultado Operacional";Receita+Margem+ResultadoO;
                IF(SELECTEDVALUE(Dados_[dre_titulo])="= Resultado Líquido";Receita+Margem+ResultadoO+ResultadoL;
                    IF(SELECTEDVALUE(Dados_[dre_titulo])="= EBTIDA";Receita+Margem+ResultadoO+ResultadoL+EBTIDA;
                        BLANK()))))))

Return:
But when I put the colunm "Nome Mês" (Month Name), my data dont work correctly (not doing the cumulative per month):

I have tried put a MAX comparative in each variable, but dont work ("Competência" is my date data):

_Subtotal = 
VAR Valor = CALCULATE(SUM(Dados_[Valor]))
VAR Receita = CALCULATE(SUM(Dados_[Valor]);FILTER(ALLSELECTED(Dados_);Dados_[dre_titulo]="= Receita Líquida"&&Dados_[Competência]<=MAX(Dados_[Competência])))
VAR Margem = CALCULATE(SUM(Dados_[Valor]);FILTER(ALLSELECTED(Dados_);Dados_[dre_titulo]="= Margem Bruta"&&Dados_[Competência]<=MAX(Dados_[Competência])))+Receita
VAR ResultadoO = CALCULATE(SUM(Dados_[Valor]);FILTER(ALLSELECTED(Dados_);Dados_[dre_titulo]="= Resultado Operacional"&&Dados_[Competência]<=MAX(Dados_[Competência])&&Dados_[Ordem DRE]<=MAX(Dados_[Ordem DRE])))+Margem
VAR ResultadoL = CALCULATE(SUM(Dados_[Valor]);FILTER(ALLSELECTED(Dados_);Dados_[dre_titulo]="= Resultado Líquido"&&Dados_[Competência]<=MAX(Dados_[Competência])&&Dados_[Ordem DRE]<=MAX(Dados_[Ordem DRE])))+ResultadoO
VAR EBTIDA = CALCULATE(SUM(Dados_[Valor]);FILTER(ALLSELECTED(Dados_);Dados_[dre_titulo]="= EBTIDA"&&Dados_[Competência]<=MAX(Dados_[Competência])&&Dados_[Ordem DRE]<=MAX(Dados_[Ordem DRE])))+ResultadoL
RETURN 

IF(ISFILTERED(Dados_[Nome])||ISFILTERED(Dados_[descrição_conta])||ISFILTERED(Dados_[dre_sub-titulo]);Valor;
    IF(SELECTEDVALUE(Dados_[dre_titulo])="= Receita Líquida";Receita;
        IF(SELECTEDVALUE(Dados_[dre_titulo])="= Margem Bruta";Margem;
            IF(SELECTEDVALUE(Dados_[dre_titulo])="= Resultado Operacional";ResultadoO;
                IF(SELECTEDVALUE(Dados_[dre_titulo])="= Resultado Líquido";ResultadoL;
                    IF(SELECTEDVALUE(Dados_[dre_titulo])="= EBTIDA";EBTIDA;
                        BLANK()))))))

Return: 

 

 

  • Hi Anonymous ,

     

    You may change the measure like DAX below.

     

    _Subtotal = CALCULATE(SUM(Dados_[Valor]), FILTER(ALLSELECTED(Dados_), YEAR(Dados_[Competência])<=YEAR(MAX(Dados_[Competência]))&&MONTH(Dados_[Competência])<=MONTH(MAX(Dados_[Competência]))))

    If I misunderstood it, could you please share your sample data and desired output screenshots for further analysis? You can also upload sample pbix to OneDrive and post the link here. Do mask sensitive data before uploading.

     

    Best Regards,

    Amy

     

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

  • Anonymous's avatar
    Anonymous
    7 years ago

    Hi v-xicai , thank you!

    This solution works perfectly! 

    Also, I've tried this solution above and works too:

    _Subtotal = 
    SWITCH(
        TRUE();
        ISFILTERED(Dados_[dre_sub-titulo])||ISFILTERED(Dados_[descrição_conta])||ISFILTERED(Dados_[Nome]);[_Teste Valor Total];
        ISFILTERED(Dados_[dre_titulo]);CALCULATE(
            [_Teste Valor Total];FILTER(ALLEXCEPT(Dados_;Dados_[Mês DRE]);
            Dados_[Ordem DRE]<=SELECTEDVALUE(Dados_[Ordem DRE])||Dados_[Competência]=SELECTEDVALUE(Dados_[Competência])
            )
        );
        [_Teste Valor Total]
    )

    Best for you, friend!

2 Replies

  • v-xicai's avatar
    v-xicai
    Icon for Community Support rankCommunity Support

    Hi Anonymous ,

     

    You may change the measure like DAX below.

     

    _Subtotal = CALCULATE(SUM(Dados_[Valor]), FILTER(ALLSELECTED(Dados_), YEAR(Dados_[Competência])<=YEAR(MAX(Dados_[Competência]))&&MONTH(Dados_[Competência])<=MONTH(MAX(Dados_[Competência]))))

    If I misunderstood it, could you please share your sample data and desired output screenshots for further analysis? You can also upload sample pbix to OneDrive and post the link here. Do mask sensitive data before uploading.

     

    Best Regards,

    Amy

     

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi v-xicai , thank you!

      This solution works perfectly! 

      Also, I've tried this solution above and works too:

      _Subtotal = 
      SWITCH(
          TRUE();
          ISFILTERED(Dados_[dre_sub-titulo])||ISFILTERED(Dados_[descrição_conta])||ISFILTERED(Dados_[Nome]);[_Teste Valor Total];
          ISFILTERED(Dados_[dre_titulo]);CALCULATE(
              [_Teste Valor Total];FILTER(ALLEXCEPT(Dados_;Dados_[Mês DRE]);
              Dados_[Ordem DRE]<=SELECTEDVALUE(Dados_[Ordem DRE])||Dados_[Competência]=SELECTEDVALUE(Dados_[Competência])
              )
          );
          [_Teste Valor Total]
      )

      Best for you, friend!