tableau-api - 根据两组的中位数计算比率
问题描述
我正在尝试计算女性工资中位数与男性工资中位数的比率(工资字段称为 Bscmpnstntotal)。我想我需要类似下面的东西,但它会产生语法错误:
=IF (ATTR([Gender]="female") THEN WINDOW_MEDIAN([Bscmpnstntotal]) ELSE 0 END / IF (ATTR([Gender]="male") THEN WINDOW_MEDIAN([Bscmpnstntotal]) ELSE 0 END
解决方案
你为什么使用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 字段:
[女性中位数]/[男性中位数]
推荐阅读
- javascript - Javascript将数组中的字符串拆分为数组中的对象
- ios - 如何使用目标 c/Swift 在本机 iOS 中禁用屏幕截图?
- node.js - 从nodejs中的回调函数返回值
- python - 用 sympy 求解线性方程组需要很长时间
- android - 华为 HMS - 使用自定义 uri 架构从浏览器打开应用程序
- html - 背景循环视频在手机上不起作用
- .net - 如何在 gRPC 上实现服务器“回调”
- sql - 如何在databricks sql中将字符串转换为日期
- sql - SQL 未从数据集中返回所需的 MAX 版本
- reactjs - Material UI 材质表 TablePagination 问题。(反应)