tableau-api - 在 Tableau 中将 2 个计算字段合并为 1 个计算字段
问题描述
我正在尝试将 2 个计算字段合并为 tableau 中的 1 个计算字段。
第一个计算字段具有以下公式:
SUM(IF [PRODUCT]="MA" THEN((IIF(YEAR([CARRIER_EFFECTIVE_DATE])=2018 AND
YEAR([CALENDAR_DATE])<=2018, [TOTAL_COMMISSION],0))) END)/SUM(IF [PRODUCT]="MA"
THEN((IIF(YEAR([CARRIER_EFFECTIVE_DATE])=2018 AND YEAR([CALENDAR_DATE])<=2018,
[PAID_MEMBERS],0))) END)
第二个计算字段有这个公式:
SUM(IF [PRODUCT]="MS"
THEN ((IIF(DATE([CARRIER_EFFECTIVE_DATE])=#2014-01-01# AND DATE([CALENDAR_DATE])
<=#2014-12-31#,[DATE_DEBIT_COMMISSION],0))) END)/ SUM(IF [PRODUCT]="MS"
THEN ((IIF (DATE([CARRIER_EFFECTIVE_DATE])>=#2014-01-01# AND
DATE([CARRIER_EFFECTIVE_DATE])<=#2014-01-31#,[PAID_MEMBERS],0))) END)
我分别创建了这两个计算,但是当我尝试组合在一起时,我收到一条错误消息“不能混合聚合和非聚合比较或导致 'IF' 表达式”有人可以帮忙将这两个组合在一起吗?
解决方案
在组合 IF 语句中,需要将 [Product] 字段包装在 ATTR() 中以使其成为聚合。像这样...
IF ATTR([PRODUCT])="MA" ...
我的测试显示计算编译为有效。
这是根据您的原始编辑的完整计算字段。
IF ATTR([Product])="MA"
THEN
SUM(
IF [Product]="MA"
THEN((IIF(YEAR([Carrier Effective Date])=2018 AND YEAR([Calendar Date])<=2018, [Total Commission],0)))
END)
/
SUM(
IF [Product]="MA"
THEN((IIF(YEAR([Carrier Effective Date])=2018 AND YEAR([Calendar Date])<=2018, [Paid Members],0)))
END)
ELSE
SUM(
IF [Product]="MS"
THEN ((IIF(DATE([Carrier Effective Date])=#2014-01-01# AND DATE([Calendar Date])<=#2014-12-31#,
[Date Debit Commission],0)))
END)
/
SUM(
IF [Product]="MS"
THEN ((IIF (DATE([Carrier Effective Date])>=#2014-01-01# AND DATE([Carrier Effective Date])<=#2014-01-31#,
[Paid Members],0)))
END)
END
推荐阅读
- amazon-web-services - 将多个输入传递到 AWS Step Function 中的 Map State
- python - 如何在 Keras 后端计算矩阵的轨迹?
- python - 代码不会进入 HTML/Flask/Python 应用程序中的下一步
- html - 无法让离子后退按钮正常工作
- dexie - 使用 Dexie 作为一个模块
- c++ - 如何使用清单将 dll 添加到 VC++ 项目
- reactjs - 仅当状态随反应发生变化时才更新数据
- android - 监听 AppBarLayout 的偏移量变化(折叠/展开)以改变 Kotlin 中工具栏的背景
- html - 识别请求来自哪个 QR 码
- amazon-web-services - AWS 无法为代码管道“创建新的 DeviceFarm 项目”