Forum Discussion

manutejedor's avatar
manutejedor
Frequent Visitor
7 years ago
Solved

SUM values by higher aggregation

Hi! I have a very simple sample of data with two tables: "his_prod" and "his_prod_op". "His_prod" is linked to "his_prod_op" by a "one to many" relationship on the field "Task". In the table "his_prod" there are different "Projects" that can have several "Tasks", and each "Task" has a "Duration". The table "his_prod_op" defines the "Persons" that have participated in each "Task". 

 

What I intend to do is to summarize the total "Duration" of the "Projects" in which a specific "Person" has participated, no matter the "Tasks" he's been in, this is:

 

The problem I am facing is that the moment I filter by "Person", no matter what DAX formula I use (SUM, SUMX, CALCUALTE, etc), all I get is the "Duration" of the "Task" in which that person has participated, this is (in red wrong values):

 

 

Is there any formula to calculate this "Duration" by "Job"? Thanks for the help!

 

Manu

  • Hi manutejedor,

     

    LivioLanzo's suggestion works great. But you can create a simpler one, without adding an extra Person table.

    Total duration =
    IF (
        COUNTROWS ( his_prod_op ),
        CALCULATE ( SUM ( his_prod[Duration] ), ALLSELECTED ( his_prod_op[Person] ) )
    )

    Best regards,

    Yuliana Gu

2 Replies

  • Hello manutejedor,

     

    you can reshape your model this way where you allocated a task time to each person proportially, should be farily easy within Power query with a couple of joins

     

     

     

    then you can add this measure:

     

    =IF( 
        COUNTROWS( his_prod_op ),
        CALCULATE( 
            SUM( his_Prod_op[Durarion Allocation] ), 
          ALL( Persons[Person] )
        )
    )

     

     

    You can download the file here:

     

    https://1drv.ms/x/s!AiiWkkwHZChHj1eypR2cbxq8ho32

     

     

  • v-yulgu-msft's avatar
    v-yulgu-msft
    Microsoft Employee

    Hi manutejedor,

     

    LivioLanzo's suggestion works great. But you can create a simpler one, without adding an extra Person table.

    Total duration =
    IF (
        COUNTROWS ( his_prod_op ),
        CALCULATE ( SUM ( his_prod[Duration] ), ALLSELECTED ( his_prod_op[Person] ) )
    )

    Best regards,

    Yuliana Gu