【问题标题】:DAX Query to Calculate % Difference计算百分比差异的 DAX 查询
【发布时间】:2017-10-17 20:19:38
【问题描述】:

我有一些看起来像这样的数据:

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"),"")

【问题讨论】:

    标签: powerbi dax


    【解决方案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())
    

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

    【讨论】:

    • 这很接近,但我需要一个 IF 来查看每个薪酬等级的性别更大。 IE。它只会为每个工资等级显示一个栏,无论是男性还是女性。
    • 我能够集成 IF 语句。我的 DAX 查询和图表:ibb.co/bBE60mibb.co/eVJYfm ... 我想补充一下,理想情况下,如果给定的薪酬等级中只有男性或女性(但不是两者),则不应显示任何值。
    • 也许这可以通过上图中的度量来实现,再加上一个额外的列,表示“M”或“F”,根据哪个更高的工资等级?
    • 我怀疑您应该真正使用COUNTROWS(VALUES(Pay[Gender])) &gt; 1 或DISTINCTCOUNT(Pay[Gender]) &gt; 1 而不是COUNT(Pay[Gender]) &gt; 1,因为它们都计算不同值的数量。如果有两行具有相同的性别,则第一个表达式将返回 true。
    • 我已经合并了 DISTINCTCOUNT,现在什么都没有显示。
    猜你喜欢
    • 2020-11-27
    • 2021-06-17
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2015-05-09
    相关资源
    最近更新 更多