【问题标题】:Combine 2 calculated fields into 1 calculated field in Tableau在 Tableau 中将 2 个计算字段合并为 1 个计算字段
【发布时间】:2019-07-13 08:31:48
【问题描述】:

我正在尝试将 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)

我分别创建了这 2 个计算,但是当我尝试组合在一起时,我收到一条错误消息“无法混合聚合和非聚合比较或导致‘IF’表达式” 有人可以帮忙将这两个结合在一起吗?

【问题讨论】:

  • 你能发布你对组合的尝试吗?然后我们可以解决这个问题。
  • IF [PRODUCT]="MA" THEN SUM(IF [PRODUCT]="MA" THEN((IIF(YEAR([CARRIER_EFFECTIVE_DATE])=2018 AND YEAR([CALENDAR_DATE])=#2014-01-01# AND DATE([CARRIER_EFFECTIVE_DATE] )
  • 我试过了,但它说“不能混合聚合和非聚合比较或导致‘IF’表达式”
  • 我也试过了,但是没用
  • SUM(IF [PRODUCT]="MA" THEN SUM(IF [PRODUCT]="MA" THEN((IIF(YEAR([CARRIER_EFFECTIVE_DATE])=2018 AND YEAR([CALENDAR_DATE])=#2014-01-01# AND DATE([ CARRIER_EFFECTIVE_DATE])

标签: tableau-api calculated-field


【解决方案1】:

在组合 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

【讨论】:

  • 运气好吗?如果您自己想通了,请添加答案并应用绿色复选标记。
猜你喜欢
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2015-10-19
  • 2021-10-15
  • 2021-04-19
相关资源
最近更新 更多