Forum Discussion

ThomasWeppler's avatar
ThomasWeppler
Impactful Individual
4 years ago
Solved

Summarize table

Hi Power Bi community

I have made a summarize table that looks at all the invoices diffrent employees send out each month.

Salery = SUMMARIZE(Invoice, Calender[Year_months], invoice[userid], "Faktureret", sum(Invoice[Faktureret]))

But if no invoices are send out I want to get a 0 in the table and not have the colum ommited

If you look closely at the table above you can see that no invoices were send out from the selected userids during October 2021
So the summarize table doesn't add a column for these months.

Ideally I would like to still have a the month added even if  but if it is possible I would like to still get the a column for each of the users for October 2021 and than just write 0 rather than leaveing them out completely.

  • I found a solution to the problem.
    In the end I just made a new table in PowerBI desktop manually with the users id number and a month index from 0 to -12 with the month index I made a lookupfuntion to find the Calender[year_months] from my calender tabel.
    Now I had a month for each user from there I just used lookup funktions to get all the data I needed in one table
    If there was no data to be found I just used the if(isblank,0,tabel[value]) at the end of my calculations.
    From there I just added a new colum which calculate the salary in my new tabel.
    Thanks a ton for the help Johnt and Paul, I didn't end up using any of your solutions but it definitely helped me in the right direction.
    If a moderator read this message just close the thread.

12 Replies

    • ThomasWeppler's avatar
      ThomasWeppler
      Impactful Individual

      Thanks a ton. This definitely got me further.
      I ended up makeing a measure with the all filter like this

      Test =
      var test_ = CALCULATE(SUM(Salery[Salery]),ALL(calender[Months_year]))
      return
      if(ISBLANK(test_),20000, test_)

      As you can see in the table below I got the right value now, but I still have problems with the sum. Since the employee added 0 to the sum instead of the 20.000. So the sum of jul-21 should be 40.000 and the sum of okt-21 should be 51.809 not 31.809

      ā€ƒ

      • PaulDBrown's avatar
        PaulDBrown
        Community Champion

         

        Test =
        VAR test_ =
            CALCULATE ( SUM ( Salery[Salery] ), ALL ( calender[Months_year] ) )
        VAR _calc =
            IF ( ISBLANK ( test_ ), 20000, test_ )
        RETURN
            SUMX ( UserTable, _calc )
        

         

  • You can use COALESCE to make sure that you return 0 instead of blank, so you could change your code to be

    Salery = ADDCOLUMNS( SUMMARIZE(Invoice, 'Calendar'[Year_months], Invoice[user_id]), "Faktureret", 
    COALESCE( CALCULATE(SUM(Invoice[Faktureret])), 0) )

    Its best practice not to use SUMMARIZE to add calculated columns to a summary table but to use ADDCOLUMNS instead - https://www.sqlbi.com/articles/best-practices-using-summarize-and-addcolumns/ 

    • ThomasWeppler's avatar
      ThomasWeppler
      Impactful Individual

      I have tried your code and it doesn't change anything. I still get the exact same table as I got before.


      • johnt75's avatar
        johnt75
        Super User

        do you have some sample data you could share ?

  • ThomasWeppler's avatar
    ThomasWeppler
    Impactful Individual

    I found a solution to the problem.
    In the end I just made a new table in PowerBI desktop manually with the users id number and a month index from 0 to -12 with the month index I made a lookupfuntion to find the Calender[year_months] from my calender tabel.
    Now I had a month for each user from there I just used lookup funktions to get all the data I needed in one table
    If there was no data to be found I just used the if(isblank,0,tabel[value]) at the end of my calculations.
    From there I just added a new colum which calculate the salary in my new tabel.
    Thanks a ton for the help Johnt and Paul, I didn't end up using any of your solutions but it definitely helped me in the right direction.
    If a moderator read this message just close the thread.