Tableau:使用LOD根据条件计算不同数量的记录(10.2)

时间:2018-02-23 20:46:25

标签: tableau

这个问题与其他人类似,但我遇到了产生正确输出的问题。我感谢任何帮助!

目标是维度,如果字符串包含“列表电子邮件”,则计算不同记录的数量,否则计算所有记录。

我试过了:

IF CONTAINS(ATTR([Subject]), "List Email:")
then ((COUNTD([Subject])))
Else COUNT([Subject])
END

(仅当尺寸在视图中时才有效)

CASE CONTAINS(ATTR([Subject]), "List Email:")
WHEN TRUE   then ATTR({ FIXED  [Subject] : COUNTD([Subject])})
ELSE ATTR({ FIXED  [Subject] : COUNT([Subject])})
END

包含数据的工作簿:https://community.tableau.com/message/729431

1 个答案:

答案 0 :(得分:3)

从工作簿和"所需的输出"在链接中,您希望修复[User]MONTH([Date])(与[Subject]上的修复相同,就像在问题中尝试的代码一样。

这是我创建的字段,为您提供所需的输出:

User Emails for Month:
{ FIXED [User], MONTH([Date]) : 
    COUNTD(IIF(CONTAINS([Subject],"List Email"),[Subject],NULL))
    +
    COUNT(IIF(NOT CONTAINS([Subject],"List Email"),[Subject],NULL))
}

对于每个用户和月,计算包含列表电子邮件的不同电子邮件,并添加所有不包含列表电子邮件的电子邮件。

请注意,它与所需的输出匹配。如果相反,总计应该是12月的3和1月的16(即,无论用户如何计算不同的主题),则不需要LOD计算:

# Emails:
COUNTD(IIF(CONTAINS([Subject],"List Email"),[Subject],NULL))
+
COUNT(IIF(NOT CONTAINS([Subject],"List Email"),[Subject],NULL))