cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
patrisack Frequent Visitor
Frequent Visitor

Conditional Lookup (Match ID and dates and fetch correct salary)

Hi!

 

I have an issue with with report I'm building for my company. I have a two tables that I want to combine. One with Salary listed per employee and another table with worked hours. Salaries for employees is listed for each salary period in a new row (from one date to another). Worked hours is listed per day and shows worked hours for each day per employee ID. There is also a table with information about the employee where employees are only listed once per row.

 

I would like to somehow get the correct salary from the "Salary" table to the "Worked hours" table, looking at the employee ID and the date when they worked. This is to then make a report for the total cost of personnel-costs.

 

Here is an example of the data (a simplified example of how the real data model looks).

 

Would really appriciate any help as I've been stuck for the last couple of days.

 

Thanks,

Patrick

1 ACCEPTED SOLUTION

Accepted Solutions
waltheed
Advisor

Re: Conditional Lookup (Match ID and dates and fetch correct salary)

Hi Patrick, 

 

I may have a solution for you.:

 

 

Add a calculated column to the HoursWorked table, and use this formula:

=
CALCULATE (
    MAXX ( Salary, Salary[Salary] ),
    FILTER (
        Salary,
        Salary[EmployeeID] = HoursWorked[EmployeeID]
            && Salary[FromDate] <= HoursWorked[Date]
            && (
                Salary[ToDate] > HoursWorked[Date]
                    || ISBLANK ( Salary[ToDate] )
            )
    )
)

 

Does this work for you?

 

Cheers, Edgar Walther
Power BI User Group Netherlands
4 REPLIES 4
waltheed
Advisor

Re: Conditional Lookup (Match ID and dates and fetch correct salary)

Hi Patrick, 

 

I may have a solution for you.:

 

 

Add a calculated column to the HoursWorked table, and use this formula:

=
CALCULATE (
    MAXX ( Salary, Salary[Salary] ),
    FILTER (
        Salary,
        Salary[EmployeeID] = HoursWorked[EmployeeID]
            && Salary[FromDate] <= HoursWorked[Date]
            && (
                Salary[ToDate] > HoursWorked[Date]
                    || ISBLANK ( Salary[ToDate] )
            )
    )
)

 

Does this work for you?

 

Cheers, Edgar Walther
Power BI User Group Netherlands
patrisack Frequent Visitor
Frequent Visitor

Re: Conditional Lookup (Match ID and dates and fetch correct salary)

Amazing! It worked!!

 

If you have time to go through the formula and how it works I'd really appriciate that.

 

Many thanks!!

Highlighted
waltheed
Advisor

Re: Conditional Lookup (Match ID and dates and fetch correct salary)

Sure, I'll give it a try...

 

You want the Salary from the Salary table, but you want to filter the Salary table by some conditions.

 

First, you want the Employee ID's to match: Salary[EmployeeID] = HoursWorked[EmployeeID]

Also, the HoursWorked[Date] needs to be between the Salary[FromDate]and the Salary[ToDate]

Or the Salary[ToDate] can be empty. 

(by the way, && means AND, || means OR, so you must use brackets correctly)

 

Then you to need be sure that just one value is returned, because you use it as a value in a calculated column. Just take the MAXX, MINX could also work. 

Cheers, Edgar Walther
Power BI User Group Netherlands
patrisack Frequent Visitor
Frequent Visitor

Re: Conditional Lookup (Match ID and dates and fetch correct salary)

Thanks again! Great explaination!! Great to understand what's happening in addition to having the correct formula Smiley Happy