使用Tableau做数据分析的一些思考



使用Tableau做数据分析的一些思考


参考:

Tableau数据分析训练营之LOD专题

15 大详细级别表达式



对于Tableau数据分析有两句话非常重要:

  • 分析即聚合。
  • 维度是聚合依据。



问题分析

需要理解复杂问题的层级关系,通常与当前层级有:向上/向下,两种关系

  • 向下的层级问题,需要用fixed固定层级关系,也可以使用INCLUDE
  • 向上的层级问题,有三种方法:
    1. 表计算:window_sum/total
      建议使用,因为表计算是计算展示出来的数据,计算速度比较快
    2. fixed:直接指定需要计算的层级
    3. exclude:排除当前视图的层级,排除之后就根据更高级一级的维度聚合。
      exclude:是按照排除指定层级之后,最小层级聚合的,比如说有三个层级,A、B、C,将B层级排除之后,将按照C层级进行聚合。

例如:

  • 简单的问题是可以直接从明细表中将维度提取出来,比如说每个国家的销量,每个国家就可以直接从明细表中group by出来。
  • 复杂问题是引用了其他聚合的结果作为维度。比如说销售量1、2...N的客户数,这里的1、2...N,无法直接从明细表中提取出来,需要先进行聚合,将聚合的结果作为维度(一般使用Fixed),再一步的聚合。

那么遇到复杂问题该怎么办呢?

首先应该做的是问题分析。将问题拆解为三个内容:

  1. 问题范围
  2. 问题描述(维度)
  3. 问题答案(度量)

例如问题:

有多少客户购买了1次、2次、3次…N次订单?

现在看一下这个问题的描述,思考三个问题,问题的范围是什么?问题描述是什么?问题的答案又是什么?

问题范围:可以看到,该问题没有设定范围,也就是所有数据。

问题描述(维度):它需要的是,购买了1次、2次、3次....N次订单的XXX,所以它的维度是不同频次

问题答案(度量):它最后需要什么,多少客户,因此客户数量就是它的结果。

综上,将问题转换为标准问题结果:(no filter),不同购买频次的客户数量?

在这里插入图片描述

将问题转换为标准问题之后,就根据维度,度量,范围,做一定的数据分析。

遇到问题最主要的是能够分解问题,主要是对于问题维度的思考,适合这个问题的维度。



Tableau使用技巧

  • 对于表的计算,window_sum,在使用目前视图中已经有的数据很有效。比如使用IIF判断得到的数据,若想要都进行赋值,可以使用window_sum,来计算。
  • 对于赋予想要筛选的值/不确定的值,可以将这个字段转换为参数,之后在公式中使用这个参数,就可以根据这个参数进行筛选了。
  • 在tableau中,交互条件也可以进行设置,设置交互条件之后,点击某个值,可以修改参数的值。
  • 对于sum和相减,建议先sum再相减,若先相减再sum,性能会较差
  • SUM(IIF({INCLUDE [Product]:SUM([Profit])-SUM([Target Profit])}>0,1,0)) 可以判断LOD的结果,它与SUM({INCLUDE [Product]:IIF(SUM([Profit])-SUM([Target Profit])>0,1,0)})结果相同

  • 先从熟悉的层次开始,从交叉表开始,最后转换为图形。

  • 对于综合问题的层次、筛选的影响,合理的选择计算。

    • FIXED是绝对的引用,不收视图的影响
    • INCLUDE是相对的引用,通常用于更低层次的聚合。
    • INCLUDE为空,相当于当前视图完成聚合,并可以根据当前视图的变换而变化。同理,EXCLUED为空,也是基于当前视图完场聚合。
  • 表计算是聚合的聚合,而LOD是在指定层级的聚合。

  • 表计算,可以进行辅助计算,设定辅助计算的维度,以及计算的方法。

  • 在实际业务中,关于周的数据需要多一点考虑,例如日期虽然同步了,但是每周的数量不一致。这是在实际业务中需要注意的地方。

  • 将筛选器添加到上下文,会将筛选的优先级提高到最高,例如字段中有fixed,默认筛选器在fixed优先级之后,所以筛选之后不会影响fixed的计算结果。将筛选器添加到上下文之后,筛选器的优先级会高于fixed,筛选之后的结果会影响fixed的计算结果。有一种特殊情况,当筛选器的对象和fixed定义的层级是一一对应的,这时是否将筛选器添加到上下文,对fixed的计算都没有影响了。

  • tableau中集合的运用是,可以理解成多个参数,在一个仪表盘中,可以创建一个操作,用来更新集合的值。


  • 默认的窗口函数的累加是从头开始累加的。WINDOW_SUM(COUNTD([Customer ID]),0,LAST()),注意后面两个参数,可以实现从后往前加,利用的类似与sql中的窗口函数,将末尾固定,每次累计当前行到最后一行。
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力生活的黄先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值