tableau计算之(三)表计算——分区/寻址——手动计算/快速计算

一、表计算是什么?

        表计算是指不通过数据源进行直接计算,而是借助中间表计算得出结果的计算,其基本特征是基于视图中聚合数据的二次聚合计算

二、分区与寻址的概念

        要了解表计算,必须先了解——分区与寻址

分区partitioning:分区规定了表计算的范围。每个分区就是一个单独的“表”,每个计算都是在独立的表中进行的。各个表在计算时没有关系,互不影响。

寻址addressing:寻址规定了每个分区的源(锚点)(读mao),它定义了表计算的根节点,指明了计算的方向。

>举个栗子<

1. 制作中间表(视图)

        视图中的每一个值表示:各个类别在不同季度的销售额之和。

2. 添加表计算

         两者任选其一, 进行合计百分比。

        合计百分比是指某一部分占总体的比重是多少。

        计算公式:sum([销售额])/total(sum([销售额]))

        分子:是每一个单元格的值

        分母:每一个分区的总和

         最终视图如下:

3. 修改分区和寻址的方式

3.1 表(横穿)table across

        意义:在每个季度中,各类别销售额占比情况

3.2 表(向下)table down

        意义:各类别的销售额在各季度占比情况。

3.3 表 across then down 

        意义:各类别的各季度在总销售额的占比情况

3.4 区(横穿)pane across

3.5 区向下 pane down

 3.6 区 pane (across then down)

3.7 单元格(cell)

3.8 特定维度

四、表计算的分类

        表计算可以分为快速表分类和手动表分类。

1.索引排序函数:

        index()、size()、first()、last()。这四个函数不需要参数;

        rank()以及延伸函数。如rank_dense()、rank_modified()等。

2.移动计算函数:

        running_x。比如running_sum、running_avg、running_max等。

3.范围计算函数:

        window_x。比如window_sum、window_avg、window_max等。

4.1 手动表计算

1. total(expression)计算

        total()是为每一个分区返回同一个结果,也就是说,total为各个分区求和,每个分区返回同一个数值。

2. running_sum(expression) 递归计算

        对于同一个分区的不同行,running_sum()返回不同的数值

3. 索引排序函数

first():返回当前行到第一行的偏移行数

last():返回当前行到分区最后一行的偏移行数

size():返回分区的行数

index():返回分区的当前行索引

4. window_sum(expression,[start,end])

        在手动表计算中,window_x函数是使用最多的。

total(expression)=window_sum(expression)

running(expression)=window_sum(expression,first(),0)

移动平均=window_sum(expression,start,end)

 5. previous_value(expression) 返回前一个值

 

 6. lookup(expression,[offset]) 返回目标行的值

 4.2 快速表计算

        tableau内置了部分常用的表计算,称之为“快速表计算”,这些快速表计算视为预设好的表计算表达式,使用了上面介绍的lookup、first等快速表计算。

比如:总额百分比=sum([销售额])/total(sum([销售额]))

A 常见快速表计算

        第一类的快速表计算与日期无关,常见的七种快速表计算的基本对应关系如下:

1.汇总=running_sum(sum([销售额]))

2.差异=zn(sum([销售额]))-lookup(zn(sum([销售额])),-1)

3.差异百分比=(zn(sum([销售额]))-lookup(zn(sum([销售额])),-1))/abs(lookup(zn(sum([销售额])),-1))

4.总额百分比=sum([销售额])/total(sum([销售额]))

5.排序=rank(sum([销售额]))

6.百分位=rank_percentile(sum([销售额]))

7.移动平均=window_avg(sum([销售额]),-2,0)  (前两位到当前)

B 日期类快速表计算

        另外四个快速表计算是基于连续时间的,其中前三个需要详细级别至少到“年”,当存在多个日期维度时,分区字段默认为最低的详细级别的字段,比如有年、季度,则以季度为计算。

        使用日期类表计算有一个前提:视图中必须有相应的日期字段

年度累计、年度同比:详细级别必须是

YTD累计、YTD同比:详细级别必须是想表达的D,比如month或者day,不能是年

1.年度累计=running_sum(sum([销售额]))

2.复合增长率=power(zn(sum([销售额]))/lookup(zn(sum([销售额])),first)),zn(1/(index(-1)))-1

3.年度同比

C 特殊类—二次表计算

        在表计算中,比较特殊的是最后一个“年度累计增长率”,YTD Growth,当我们添加这个表计算,并拖入到度量中时,会发现度量中出现了两个计算字段。中文下是“计算10”和“计算10 1”(10代表的是第10次通过拖动生成的计算字段)。为什么?因为年度累计增长率是二次表计算,虽然也可以在一个公式中表明,但这样更有助于用户看清楚。我们将两个表计算改成YTD SUM计算累计绝对值和YTD GROWTH累计增长率

累计绝对值=running_sum(sum([销售额]))

累计增长率=(zn([累计绝对值])-lookup(zn(累计绝对值)),-1))/abs(lookup(zn(累计绝对值)),-1))

五、总结

        表计算是一种高效而快速的tableau计算,它有几个显而易见的好处:

1. 不需要读取数据源,因此计算更快,真正的所见即所得

2. 可以一个计算字段返回多个数值,因此在执行移动运算、递归运算、自身运算等情形下,是其他计算不可替代的

3. 预设的快速计算和二次计算方法,基本满足大多数需求,无需代码开发,学习成本低

        使用表计算,需要注意的地方:

1. 表计算在操作顺序中的优先级低于所有的筛选器,因此调整筛选器后,表计算都会根据新的视图数据重新计算,因此要特别注意数据的详细级别,如果视图中没有了去年的数据,表计算的YTD就无法运行

2. 编辑表计算时需要理解分区和寻址这两个概念,这是表计算的逻辑基础,分区隔离了表计算,寻址确定了运行的顺序。

  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值