DAX-запрос для расчета% разницы

У меня есть некоторые данные, которые выглядят так:

Gender  Salary  PayGrade
M       40000    3
F       35000    3
M       50000    5
M       65000    7

Я создаю визуал PowerBI, который должен отображать горизонтальную полосу для каждой категории заработной платы, показывая разницу в $ по полу. IE В PayGrade 3 мужчинам платят на 5000 долларов больше, чем женщинам в этом примере.

Как я могу структурировать запрос DAX для моделирования этого? Должно быть что-то вроде

=IF(SUM(MaleSalaries) > SUM(FemaleSalaries),
    SUM(MaleSalaries) - SUM(FemaleSalaries) / COUNT(FemaleSalaries)).

Я предполагаю, что разделение по классам произойдет в визуализации.

Изменить: Вот мои DAX-запросы на разрыв и пол столбца:

WageGap = IF(COUNTROWS(VALUES('Ex 6A-Salary Analysis'[Gender])) > 1,
             IF(CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "M") > 
             CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "F"),CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "M") -
             CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "F"),CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "F") -
             CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "M"))
             ,0)


ColumnGender = IF(COUNTROWS(VALUES('Ex 6A-Salary Analysis'[Gender]))>1,IF(CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]),'Ex 6A-Salary Analysis'[Gender]="M")>CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]),'Ex 6A-Salary Analysis'[Gender]="F"),"M","F"),"")

1 ответ

Решение

Если вы ищете разницу в средней заработной плате за PayGradeЯ думаю, вы хотели бы что-то вроде следующего:

WageGap = IF(DISTINCTCOUNT(Pay[Gender]) > 1,
             CALCULATE(AVERAGE(Pay[Salary]), Pay[Gender] = "M") - 
             CALCULATE(AVERAGE(Pay[Salary]), Pay[Gender] = "F")
             ,0)

куда Pay ваша таблица данных и у вас есть PayGrade на оси вашего графика.

Эта мера сначала проверяет наличие более чем одного пола в определенной категории заработной платы, а затем принимает разницу средней заработной платы.


Редактировать:

Похоже, вы пытаетесь превратить это в диаграмму торнадо. Чтобы это работало, вам понадобятся две отдельные меры, которые можно определить с помощью меры, которую я написал выше.

Men = IF([WageGap] > 0, [WageGap], BLANK())
Women = IF([WageGap] < 0, -[WageGap], BLANK())

Попробуйте поместить эти две меры в ваши значения для визуального.

Другие вопросы по тегам