Forum Discussion

DonRitchie's avatar
DonRitchie
Frequent Visitor
2 years ago
Solved

Calculated Table Using SUMMARIZE to return distinct values by max date

Hi all!  Happy New Year!

 

Been banging my head on this all morning.  I am creating a table using the following:

 

EmpTypeTable = SUMMARIZE(Employees,Employees[Employee], Employees[EmployeeType], Employees[Date])

 

An Employee many have multiple EmployeeType's.  I want to return the EmployeeType with the most recent date.


I have this: 

 

Employee EmployeeType Date
APT1/1/2024
BPT12/1/2023
BFT12/25/2023
CFT11/28/2023
CPT

12/15/2023

 

I want this:

 

Employee EmployeeType Date
APT1/1/2024
BFT12/25/2023
CPT12/15/2023

 

I have tried GROUPBY, and various FILTER commands, and SUMMARIZETABLE.  I can't figure it out.  I get errors about scalars into scalars.  I could even live with a calculated column that kept the original table and ADDCOLUMN'd the EmployeeType with the max date.

  • Anonymous's avatar
    Anonymous
    2 years ago

    Hi DonRitchie 

     

    ThxAlot Good share!

     

    For your question, here I give you the other method:

     

    Here is the data you provided

     

    “Employees”

     

    First, create a measure to calculate the “max_date”

     

    max_date = 
    CALCULATE(MAX('Employees'[Date]), 
    FILTER(ALL('Employees'), 'Employees'[Employee ] = MAX('Employees'[Employee ])))

     

     

    Then, create a new table

     

    result_employees = 
    SELECTCOLUMNS(FILTER(ALL('Employees'), 
    'Employees'[Date] = [max_date]), 
    "employee", 'Employees'[Employee ], "employtype", 'Employees'[EmployeeType ], "date", 'Employees'[Date])
    

     

     

    Here is the result

     

    Regards,

    Nono Chen

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

     

     

     

4 Replies

    • DonRitchie's avatar
      DonRitchie
      Frequent Visitor

      Perfect.  Exactly what I was looking for, and the process is easily understandable for when I need to do similar calculations (all the time).  Although, I had to add DEFAULT, between ORDERBY and PARTITIONBY. 

      Thank you!

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi DonRitchie 

     

    ThxAlot Good share!

     

    For your question, here I give you the other method:

     

    Here is the data you provided

     

    “Employees”

     

    First, create a measure to calculate the “max_date”

     

    max_date = 
    CALCULATE(MAX('Employees'[Date]), 
    FILTER(ALL('Employees'), 'Employees'[Employee ] = MAX('Employees'[Employee ])))

     

     

    Then, create a new table

     

    result_employees = 
    SELECTCOLUMNS(FILTER(ALL('Employees'), 
    'Employees'[Date] = [max_date]), 
    "employee", 'Employees'[Employee ], "employtype", 'Employees'[EmployeeType ], "date", 'Employees'[Date])
    

     

     

    Here is the result

     

    Regards,

    Nono Chen

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

     

     

     

    • DonRitchie's avatar
      DonRitchie
      Frequent Visitor

      This works as well, in the situation where I would want a comparison table.  Thank you!