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后的字段)就是我们要得聚合值
Tableau解决if语句不能混合聚合和非聚合值因为tableau是不支持if语句下赋值聚合值的,比如,我们要实现, 按月统计,12月份之前是一个逻辑,12月份后是另一个逻辑示例 if(date>‘2019-12-01’)then count(id)else count(name)end按道理说我们应该这样写,但是tableau不支持,所以我们需要把聚合数据转化成非聚合数据,...
在初步深入了解
Tableau
后,总会被一个报错困扰,
不能混合
聚合
与
非
聚合
比较结果,那么当我们遇到了这个情况的时候该怎么办呢?
什么是
聚合
函数
?常见的有 sum、count、max、min、avg 等。不含这些
函数
运算的即为
非
聚合
函数
。
我的建议是将
非
聚合
函数
变为
聚合
函数
参与运算,在
Tableau
中支持的
聚合
函数
有以下几类:
3.将计算字段拖到文本框:将计算1拖到Marks卡下面的文本框中, 再将“地区"字段拖动到“颜色"窗格
*由此看出销售额会只以“地区”这一维度进行固定
聚合
运算,这是因为我们已将维度固定为销售额
值
计算的区域
IF ([收货月份]="01" OR [收货月份]="02" OR [收货月份]="03")THEN "Q1"
ELSEIF([收货月份]="04" OR [收货月份]="05" OR [收货月份]="06")THEN "Q2"
ELSEIF([收货月份]="07" OR [收货月份]="08" OR [收货月份]="09")THEN "Q3"
ELSE "Q4"
直接可以使用COUNTD([VIPID]),然后加入时间维度就能得到结果;
尝试使用{ FIXED [VIPID]:COUNTD([记录数])},{FIXED [创建日期]:COUNTD([VIPID])}两个新增计算字段来对结果进行比较;
基类和
混合
类的
聚合
Aggregation 是一个
非
常小的 Node.js 环境的 JavaScript 库,只提供一个
函数
,用于基于 mixins 的 ECMAScript 5/6 类继承。 它将一个基类和一个或多个 mixin 类
聚合
为一个
聚合
类,然后通常将其用作另一个类的基类。
$ npm install aggregation
ECMAScript 6
var aggregation = require ( "aggregation/es6" )
class Colored {
initializer ( ) { this . _color = "white" }
get color ( ) { return this . _color }
set color ( v ) { this . _colo