2017-10-17 101 views
1

我有一些数据,看起来像这样:DAX查询计算%差

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

我创建一个PowerBI视觉应显示每个薪酬等级的水平条,显示出性别的差异$。 I.E.在这个例子中,在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()) 

尝试将这两个度量值放入您的视觉值中。

+0

这很接近,但我需要一个IF来了解每个薪酬等级哪个性别更高。 I.E.它将只显示每个薪酬等级的一个栏,无论是男性还是女性。 – gattoun

+0

我能够集成IF语句。我的DAX查询和图表:https://ibb.co/bBE60m https://ibb.co/eVJYfm ...我想补充一点,如果在给定的工资中只有男性或女性(但不是两者)等级,则不应显示值。 – gattoun

+0

也许这可以通过上面的图片中的度量来实现,再加上一个额外的表示“M”或“F”的列,这个列基于哪个更高的薪酬等级? – gattoun