tableau 计算和方法

计算:

  • 常规计算:向数据源发出计算请求,数据源计算后,tableau接收计算结果集。比如销售-成本
  • 表计算:基于返回的结果集的二次分析计算。原数据“group by”后对聚合的数据的各种分析,tableau称为"表计算"

 

表计算

参考了https://zhuanlan.zhihu.com/p/60641444

本数据:是tableau desktop的已保存数据:“世界指标”

 

这是一个聚合表。以地区+年份分组: 求列“人均医疗”的和。

表计算就是真对这个聚合表中的“聚合的数据”进行二次分析计算

  1. 右键单击“总和(人均医疗)”,选择“编辑表计算”。确定计算类型:“排序”
  2. 确定“计算依据”:“特定维度”。特定维度就是指参与了数据划分的“维度”。
    • ☑️的"维度": 对数据进行第2次分组。
    • 没有☑️的“维度”,对数据进行第一次分组。
    • 对第二次分组的数据,用已经选择好的计算类型进行计算。第一次分组只是隔离,第二次分组的数据,才会参与二次运算。

 

本例子比如:

计算类型:排序(降序)

计算依据:特定维度:☑️区域+☑️年份

所以,每行记录都被单独的分出来,然后对他们按照数值大小降序排序--不是真的排序,而是用数字代表排序的顺序。

 

还是本例子,比如:

计算类型:排序(降序)

计算依据:特定维度:☑️区年份

  1. 首先,把数据按照区域划分开。
  2. 然后,每个区域的数据再按照“年份”二次划分。
  3. 最后,对二次划分的数据,按照降序排序。因为是降序,2011年数据数值最大,所以2011年数据赋予“数号:1”

 

 

还是本例子,如果:

计算类型:排序(降序)

计算依据:特定维度:☑️区域

  1. 首先,把数据按照“年份”进行一轮划分。即每年的记录分到一组中,比如2000年的记录算一组。
  2. 然后,每组数据按照“区域”进行而论划分
  3. 最后,对每条数据进行排序(降序)。

 

 

 

 

使用参数来改变字段

1.创建参数

2.创建计算字段

3.在图表上使用计算字段

4.使用“参数控件”,并可以设置它的格式。

 

 这是创建计算字段的图。

 

分析客户在6个月之内,进行第2次购买,未购买,6个月之后购买的比率

本题思路和步骤:

  1. 创建首次购买的计算函数 
    • {FIXED [Customer ID]: MIN([Order Date])}
    • ⚠️这里的fixed相当于MySQL的group by后使用聚合函数
  2. 创建第2次购买的计算函数
    • {FIXED [Customer ID] : MIN(IF [Order Date] > [ First Order Date]
      THEN [Order Date]
      END)}

  3. 创建上面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
  4. 创建一个文件夹,把这3个计算函数放到一起。
  5. 把他们放到图表的列上或行上,显示效果不同。
  6. 新建工作表,行为"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语句。

 

posted @ 2020-03-27 11:37  Mr-chen  阅读(5702)  评论(0编辑  收藏  举报