Нужна ваша помощь, чтобы решить мою проблему с DAX Power BI.
Итак, я пытаюсь визуализировать общую стоимость каждого проекта, в котором есть сотрудник, используя Power BI. но стоимость одного сотрудника может быть разделена на какой-то проект в процентах по каждому проекту.
цель состоит в том, чтобы рассчитать общую стоимость для каждого сотрудника, а затем разделить ее на несколько проектов в процентах.
а вот эксель данные. поэтому у меня 3 табл. СТОИМОСТЬ, ОСНОВНОЙ ПОЛЬЗОВАТЕЛЬ И РАСПРЕДЕЛЕНИЕ ОПЛАТЫ.
-СТОИМОСТЬ
-ГЛАВНЫЙ ПОЛЬЗОВАТЕЛЬ
-РАСПРЕДЕЛЕНИЕ ОПЛАТЫ
И вот ожидаемый результат.
Пожалуйста, помогите мне решить мою проблему! Большое спасибо!
Во-первых, вам нужно немного изменить таблицу COST:
Я заменил «ID» на «Номер сотрудника», потому что нам нужно, чтобы таблицы COST и ALLOCATION имели одинаковые ключи сотрудников. Я проигнорировал столбец «Продукт», потому что он не имеет отношения к вопросу.
Как только таблица COST будет иметь тот же ключ сотрудника, что и таблица ALLOCATION, вы можете соединить все свои таблицы в следующую модель данных:
Таблица «Пользователь» связана с таблицами «Стоимость» и «Распределение» через «Номер сотрудника». Обратите внимание, что связь между «Пользователем» и «Распределением» является двунаправленной. Чтобы изменить соединение с однонаправленного на двунаправленное, дважды щелкните линию соединения и измените направление фильтра на ОБА. Теперь вы готовы писать меры DAX.
Мера 1:
Total Cost = SUM(COST[COST])
Эта мера просто суммирует затраты в таблице «СТОИМОСТЬ».
Мера 2:
Allocated % = SUM(Allocation[PERCENTAGE])
Эта мера просто суммирует проценты в таблице «РАСПРЕДЕЛЕНИЕ».
Мера 3:
Allocated Cost = SUMX('User', [Total Cost] * [Allocated %])
Если вы перетащите Projects в матричный визуальный элемент и добавите эту меру, вы получите следующий результат:
Дополнительное примечание:
Опытные дизайнеры избегают использования двунаправленных отношений в своих моделях (по уважительным причинам). Чтобы сохранить все отношения однонаправленными, измените последнюю меру следующим образом:
Allocated Cost =
CALCULATE(
SUMX('User', [Total Cost] * [Allocated %]),
CROSSFILTER(User[EMPLOYEE NUMBER], Allocation[EMPLOYEE NUMBER], BOTH))
CROSSFILTER делает то же самое, что и двунаправленная связь, только программно и без нежелательных побочных эффектов. Такой подход также будет работать в Excel Power Pivot, который не поддерживает двунаправленные соединения.
большое спасибо за помощь, сэр! надеюсь на успех!