计算:
- 常规计算:向数据源发出计算请求,数据源计算后,tableau接收计算结果集。比如销售-成本
- 表计算:基于返回的结果集的二次分析计算。原数据“group by”后对聚合的数据的各种分析,tableau称为"表计算"
表计算
参考了https://zhuanlan.zhihu.com/p/60641444
本数据:是tableau desktop的已保存数据:“世界指标”
这是一个聚合表。以地区+年份分组: 求列“人均医疗”的和。
表计算就是真对这个聚合表中的“聚合的数据”进行二次分析计算。
- 右键单击“总和(人均医疗)”,选择“编辑表计算”。确定计算类型:“排序”
- 确定“计算依据”:“特定维度”。特定维度就是指参与了数据划分的“维度”。
- ☑️的"维度": 对数据进行第2次分组。
- 没有☑️的“维度”,对数据进行第一次分组。
- 对第二次分组的数据,用已经选择好的计算类型进行计算。第一次分组只是隔离,第二次分组的数据,才会参与二次运算。
本例子比如:
计算类型:排序(降序)
计算依据:特定维度:☑️区域+☑️年份
所以,每行记录都被单独的分出来,然后对他们按照数值大小降序排序--不是真的排序,而是用数字代表排序的顺序。
还是本例子,比如:
计算类型:排序(降序)
计算依据:特定维度:☑️区年份
- 首先,把数据按照区域划分开。
- 然后,每个区域的数据再按照“年份”二次划分。
- 最后,对二次划分的数据,按照降序排序。因为是降序,2011年数据数值最大,所以2011年数据赋予“数号:1”
还是本例子,如果:
计算类型:排序(降序)
计算依据:特定维度:☑️区域
- 首先,把数据按照“年份”进行一轮划分。即每年的记录分到一组中,比如2000年的记录算一组。
- 然后,每组数据按照“区域”进行而论划分
- 最后,对每条数据进行排序(降序)。
使用参数来改变字段
1.创建参数
2.创建计算字段
3.在图表上使用计算字段
4.使用“参数控件”,并可以设置它的格式。
这是创建计算字段的图。
分析客户在6个月之内,进行第2次购买,未购买,6个月之后购买的比率
本题思路和步骤:
- 创建首次购买的计算函数
- {FIXED [Customer ID]: MIN([Order Date])}
- ⚠️这里的fixed相当于MySQL的group by后使用聚合函数
- 创建第2次购买的计算函数
-
{FIXED [Customer ID] : MIN(IF [Order Date] > [ First Order Date]
THEN [Order Date]
END)}
-
- 创建上面2者的差值的计算函数:"Repeat Purchasing"
-
IF [Months to Second Purcase] >= 6 then "More than 6 months" ELSEIF [Months to Second Purcase] < 6 then "Within 6 month" ELSE "No second purchase" end
-
- 创建一个文件夹,把这3个计算函数放到一起。
- 把他们放到图表的列上或行上,显示效果不同。
- 新建工作表,行为"Repeat Purchasing", 列为“Customer ID”并选择它的属性为“计数”+快速表计算->"合计百分比"
详细级别表达式-分组表达式 Level of Detail Expressions(LOD)
{FIXED [订单 ID]: SUM([利润])}
这是一个详细级别表达式:它由fix关键字和聚合函数sum组成。
详细级别表达式的关键字有3种:
- fixed: 只按照表达式内的字段来分组
- include: 除了按照表达式内的字段分组,还会考虑到视图中的维度字段来分组。
- exclude:排除指定的维度。
fixed和include不同的用处:
{FIXED [订单 ID]: SUM([利润])}
- 如果id是唯一的,那么fixed和include会得出相同的结果。
- 如果id不是唯一的,就用include.
- 不唯一是指:一个id有多条记录。
上面的例子中,如果表格内有相同的🆔,如果使用Fixed作为关键字。那么🆔为ES-2014-4879051的记录有2条,以🆔分组,会sum算出利润合计值。
这两条记录都会附加一个字段来存储这个利润合计值。
之后按照图中以国家/地区来分组,求总计(利润),那么就会失真。这是因为比利时和法国的数据被sum过了。
还是上面的例子中,如果改用include作为关键字。会考虑以🆔+国家/地区, 进行分组操作,求各自的利润合计值。
之后按照国家/地区来分组的话,就不会出现❌了。
表计算
表计算是使用视图中的数据进行的计算,不会从数据源取用数据,只会用视图表中的数据。
编辑表计算,左侧表横穿,右侧表向下:
:
表计算的范围和方向
- 表计算的范围:表,区,单元格
- 方向:向下,向上,横穿。
通过“编辑表计算”->"表计算"选项框。就可以详细进行设置,其中"特定维度"是更细节的设置。
聚合函数
attr(field),判断被分到一起的一组记录的某一field, 其值是否是唯一的,是则返回这个值,否则返回*。
count():计数
countd():计数,distinct,去重复。
数字函数
zn() :如果是null,则返回0 简化了if语句。