Мне нужно написать инструкцию DAX, которая несколько сложна с концептуальной/логической точки зрения, поэтому это может быть трудно объяснить.DAX Вычисленный столбец на основе двух столбцов из другой таблицы
У меня есть две таблицы.
На первой таблице (показано ниже) у меня есть список числовых значений (Заработная плата). Для каждого значения у меня есть соответствующий диапазон дат. У меня также есть EmployeeID и FunctionID. Цель этой таблицы - следить за почасовой заработной платой, выплачиваемой сотрудникам, выполняющим определенные функции, в определенные диапазоны дат. Каждая функция имеет свою собственную заработную плату в таблице заработной платы, НО каждому работнику может быть выплачена другая заработная плата за ту же функцию (есть также измерение для функций и сотрудников).
'Wages'
Wage StartDate EndDate EmployeeID FunctionID
20 1/1/2016 1/30/2016 3456 20
15 1/15/2016 2/12/2016 3456 22
27.5 1/20/2016 2/20/2016 7890 20
20 1/21/2016 2/10/2016 1234 19
В «Таблице 2» У меня есть запись за каждый день, когда сотрудник работал с определенной функцией. Помните, что в таблице 1 содержится информация о заработной плате для каждой функции.
'Table 2'
Date EmployeeID FunctionID DailyWage
1/1/2016 1234 $20 =CALCULATE(SUMX(???))
1/2/2016 1234 $20 =CALCULATE(SUMX(???))
1/3/2016 1234 $22 see below
1/4/2016 1234 $22
1/1/2016 4567 $27
1/2/2016 4567 $27
1/3/2016 4567 $27
(Обратите внимание, что заработная плата может меняться с течением времени)
То, что я пытаюсь сделать, это создать вычисляемый столбец на «Таблица 2» под названием «DailyWage». Я хочу, чтобы каждая строка в «Таблице 2» сообщила мне, сколько EmployeeID было оплачено на весь день (при условии 8-часового рабочего дня).
Я действительно борется с логическими шагами, так что я не уверен, что лучший способ сделать это вычисление ...
Чтобы сделать вещи еще хуже, EmployeeID может получить деньги другой заработной платы для той же функции на другой дате. Они могут начать работу с одной рабочей функцией X, а затем, как правило, их заработная плата должна увеличиться на несколько месяцев в будущем ... Это означает, что если я попытаюсь объединить EmployeeID и FunctionID, я не смогу подключиться таблицы на объединенное значение, потому что ни одна таблица не будет иметь уникальных значений.
Таким образом, если мы CONCATENATE EmployeeID и FunctionID в EmpFunID, нам нужно взять EmpFunID + дату для текущей строки, а затем сказать: «Возьмите EmpFunID в текущей строке, а также дату для текущего строка, а затем возвращает значение из столбца заработной платы на столе заработной платы, которая имеет то же EmpFunID и имеет StartDate меньше, что CurrentRowDate и имеет EndDate больше CurrentRowDate
ВОТ чТО Я ТАК ДАЛЕКО:
Step 1 = Filter 'Wages' table so that StartDate < CurrentRowDate
Step 2 = Filter 'Wages' table so that EndDate > CurrentRowDate
Step 3 = LOOKUPVALUE('Wages'[Wage], 'Wages'[EmpFunID], Table2[EmpFunID])
Теперь мне просто нужно преобразовать в функцию DAX.
Почему вы не создаете столбец, который объединяет идентификатор сотрудника и идентификатор функции в обеих таблицах и использует это для поиска данных? – teylyn
Только что обновлено - значение заработной платы может меняться со временем, поэтому в Таблице 2, если у меня есть Сотрудник №1234, выполняющий функцию №20 за 18 долларов США/час на 1/4/2016, а затем на 1/5/2016, что сотрудник получает повышение до $ 22, тогда у нас будет одна и та же комбинация WageFunctionID с двумя разными значениями заработной платы. – james5