首页 > 解决方案 > 根据两组的中位数计算比率

问题描述

我正在尝试计算女性工资中位数与男性工资中位数的比率(工资字段称为 Bscmpnstntotal)。我想我需要类似下面的东西,但它会产生语法错误:

=IF (ATTR([Gender]="female") THEN WINDOW_MEDIAN([Bscmpnstntotal]) ELSE 0 END / IF (ATTR([Gender]="male") THEN WINDOW_MEDIAN([Bscmpnstntotal]) ELSE 0 END

标签: tableau-api

解决方案


你为什么使用WINDOW_MEDIAN?这是一个表计算函数,这意味着它对聚合查询结果表进行操作,而不是对数据源中的原始数据行进行操作。您可以选择提供偏移量以对表格结果窗口的特定部分进行操作。

例如,WINDOW_MEDIAN(SUM(Profit), -2,0)

这需要从当前行到前两行的总利润的中位数

您收到语法错误,因为您在 IF 中返回一个聚合和一个值 0。如果您将其更改为类似以下内容,它将避免该语法错误:

MEDIAN(IF [gender] = 'Male' THEN [Bscmpnstntotal] ELSE 0 END)

但是不要这样做:

更安全的方法是隔离 Bscmpnstntotal。原因是您希望仅为女性条目计算中位数,而不是在我们没有女性、男性时被 0 歪曲。

所以创建一个这样的计算字段:

MEDIAN(IF [Gender]="female" THEN [Bscmpnstntotal] END)

对男性做同样的事情

然后有一个这样的 calc 字段:

[女性中位数]/[男性中位数]


推荐阅读