Tableau解决if语句不能混合聚合和非聚合值
因为tableau是不支持if语句下赋值聚合值的,比如,我们要实现, 按月统计,12月份之前是一个逻辑,12月份后是另一个逻辑
示例 if(date>‘2019-12-01’)
then count(id)
else count(name)
end
按道理说我们应该这样写,但是tableau不支持,所以我们需要把聚合数据转化成非聚合数据,可以使用fixed函数
分别定义两个计算字段
字段1(field1) 内容:{fixed month(date):count(id)}
字段2 (field2)内容:{fixed month(date):count(name)}
fixed的是非聚合数据,所以我们把聚合的值赋值给我们新建的两个字段
那么上面的逻辑就可以这样写,新建一个字段 Judge
示例: if(date>‘2019-12-01’)
then field1
else field2
end
最终,按照月份统计,AVG(Judge)这个字段
来解释下fixed字段,fixed字段,是按照某个维度进行聚合,然后得出聚合值,比如:
我们按照 id进行聚合,对num求sum值
{fixed id:sum(num)} ,那么效果如下
id num fixed后的字段
1 10 35
1 12 35
1 13 35
2 11 54
2 43 54
所以我们要按照id聚合,求值的时候,直接AVG(fixed后的字段)就是我们要得聚合值