【时序分析】客户生命周期区间的分析(未完待续)

在上次客户复购率矩阵的基础上,在往前一步走,就可以变成流失率分析。对于某个月份的100名获客样本而言,复购率60%就意味着有40%的群体短暂流失或者沉睡了,当然,这个流失/沉睡是相对于单月而言,也可能间隔两个月再次消费。这就是为什么老客户在前期复购率低,而在后期复购率反而提高——有效的会员政策和营销策略的目的,即在于激活会员的有效复购,让沉睡的会员苏醒重新加入活跃群体。 来自客户的几个问题,如下: 1、how many customers have bought less 3 months, 3~6 Ms, 6~9 Ms, 9~12Ms, and more than 12 Ms in the past year? (典型的分布分析,分布区间为客户生命周期Longitude区间) 2、 top 30% performance customers and bottom 30% performance customers, 3、scatter plot to analyze customers performance by region , department or province 1、先看第一个问题,不同客户生命周期区间的分布。 视图中是对客户的技术,而生命周期来自客户层次的计算,因此这里使用fixed lod在客户层次计算每个客户的生命周期,生命周期又依赖于每个客户的首次订单日期和最后一次订单日期。 L生命周期 = { fixed 客户名称:Continue reading “【时序分析】客户生命周期区间的分析(未完待续)”

【时序+表计算】高级案例:顾客复购率矩阵分析

今天在客户哪里做了一个销售人员的转化率分析,充分地使用了高级计算的多个函数,非常具有代表性。这里使用超市数据作为模版,迫不及待地与大家分享,并计划加入到明年的新书中。 由于超市的数据没有销售人员数据,因此这里使用“客户名称”,完成客户的复购率分析。完成的问题描述如下: 各个季度的新客户,在接下来第1、第2、第3……第N季度的复购率分别是多少? ——喜乐君 源文件可以从public下载: 复购率矩阵public 1、问题分析 按照此前问题解析的方法,这个问题是典型的高级分析——同时包含了两个层次。何为高级分析,在问题的筛选器、问题层次和聚合度量中,只有有一个位置包含了另一个层次的聚合。高级的高级分析甚至会同时在多个位置引用其他层次的聚合,比如“购物篮分析”。 主视图问题的维度是“各个季度”,聚合度量是“复购率”;聚合度量依赖于另一个层次的聚合,即每个季度有消费的客户数量除以对应「获客季度」新增的所有客户。我们把每个客户的「获客季度」称之为他所在的矩阵。这有点类似于LOD15案例中的第一题“不同客户矩阵的销售”。 本文创建了一个计算字段:first od ,用来计算每个客户的首次订单日期。在视图中这个日期以连续的季度为层次聚合,统称之为“获客季度”。 1.1 单一层次:每个季度的客户数量 在《数据可视化分析:Tableau原理与实践》第十章中,我介绍了“高级分析”的四个步骤,其中入门之基础,就是先做主视图。先不考虑接下来的矩阵,就是如下的图形。 1.2 在主视图基础上,增加客户所在的矩阵 视图的维度是“季度”,我们要引用“每个客户的首次订单所在的季度”(层次是 客户,聚合是min订单日期),很明显二者是独立的层次,因此使用fixed lod计算。之后把这个字段加入视图中,作为颜色,这样就是“客户不同获客季度矩阵,在接下来各个订单日期季度消费的客户数量”。 这样,我们可以说包含了问题分析需要的两个维度(订单日期季度和客户首次订单日期),以及需要的聚合度量(客户数量)。接下来的关键是调整视图并完成计算了。 2、构建基本的矩阵 上面的颜色字段改为连续季度后,明显线条会很多(如下图)。而且由于日期默认连续,颜色也是渐变的。 数据太多,折线反而显得混乱,我们可以尝试使用数字构建的矩阵代替。构建矩阵需要把日期改为离散,可以使用智能推荐调整。于是就有了下面的矩阵分布。 这样,我们就有了数据的雏形了,不过复购率还为时尚早。这里有两个问题: a、矩阵中仅有每个订单日期季度的消费客户数量,却没有每个“获客季度”(first od)的客户数量总和。缺少这个数据,就无法计算比率; b、矩阵中的数据,仅仅在每一行上有意义,不同获客季度的客户数量不同,因此相互之间的比较就没有意义,因此需要借助每个获客季度的客户数量总和,计算每个消费日期季度的复购比率(相当于获客季度的确定性样本)。 c、每个获客季度的时间不同,接下来的消费日期季度显然也不同。如何比较2017Q3的获客客户 和 2018年Q2的获客客户,分别在接下来了四个季度的复购率,才是关键。此后横轴的绝对日期轴就需要调整。 这个转变有点难度,我们一点点来。 3、增加更高层次的聚合——每个获客季度的客户数量 上面a的问题,就是要找到每个获客季度的客户数量,这个数据,是可以由不同消费日期季度的客户数量,通过不重复的计数计算获得的。获客季度的客户数量,层次高于当前视图。可以用下图的仪表板来表示。我们需要在左侧的工作表中,增加右侧的聚合“每个获客季度的客户数量”。 高于当前视图的二次聚合,优先表计算。这里相当于以每个获客季度为分区,以订单日期季度为方向,计算客户计数的二次求和,可以用window_sum函数计算,更简单的语法是直接使用total函数。即: total( countd([客户名称])) 不过,直接在视图中添加这个计算后,由于度量默认聚合,聚合生成坐标轴,因此矩阵中增加了坐标轴。此时需要字段上右键改为“离散”,此时依然不对,因为计算的分区错误。还需要配合设置计算依据为:订单日期季度。 表计算的关键就是:谁和谁计算,对应的字段是方向。 这样,视图中就有了统一的比较依据。 当然,上面的计算,也可以直接通过“分析——合计”拖拽完成,然后把合计放在左侧,而非默认右侧。这里之所以手动完成,是因为后面计算复购率依然要用。而且,所有的参考线,不过都是表计算的化身而已。 这里增加一个简单的步骤,计算复购率,就是每个矩阵中的客户计数,除以对应获客季度的客户计数,即: countd([客户名称]) / total( countd([客户名称])) 注意,这里的计算依据依然要设置。可以用这个字段替换此前的标签,视图就有了如下的变化。 至此,复购率的计算就完成了。由于这里使用的是每个客户名称的首次订单日期,因此第一个季度自然都是100%。在业务环境中,销售人员的成交通常晚于入职日期,因此首月的转化可以视为客户消费能力和培训效果的指标。 这里最后面临一个问题,虽然可以直观的查看每个获客季度在此后各个季度的复购率,但是无法直观地纵向比较。这就涉及到如何把绝对的日期轴,通过处理更改为相对的日期轴。 4、通过表计算更改坐标轴——公公基准的日期 这个步骤对应TC10的第二个案例,非常经典了。 如何将绝对日期改为相对日期?即相对于每个获客季度的第1、第2、第3……呢?只是日期的次序转化,首先考虑使用Tableau表计算的index函数。 直接在订单日期后输入index(),数值默认生成连续的坐标轴,这里还需要改为离散,如下图。 这里的index是基于所有日期的基准,我们希望仅保留基准index,而不再显示订单日期本身。注意,只是不显示,不能移除,因为订单日期字段是index字段的依据。可以把它拖到左侧标记的“详细信息”中。 此时进入了最重要的一步——如何设置表计算的依据。默认的index只有1,因为它默认采用的相对分区方法(表、区、单元格)无法识别标记中的字段。这里,每个获客日期为独立的分区,index的依据是订单日期——第一个月就是绝对日期的相对坐标而已。因此设置index表计算的计算依据为:订单日期。如下:Continue reading “【时序+表计算】高级案例:顾客复购率矩阵分析”

Prep2020拥抱LOD:Fixed LOD

前沿:迎接Prep 的fixed LOD吧! ——我的Tableau书稿(非最终版本) 1、聚合的必要性和用法 如果要我选一个Prep Builder远胜于desktop的一个功能,我愿意把这个殊荣授予“数据聚合”。前面我们说,数据分析的关键是分析问题所在的数据层次,并将其聚合。这个过程在Desktop中是通过日期切片和度量聚合来完成的,不过这个聚合依然是从数据库的明细数据中聚合而来。如果我们要定期给CEO展示不同品类和总公司的销售汇总,每次都从千万甚至过亿行的数据聚合,会给数据库过多的压力。Desktop通过设置数据提取以及增量刷新,尽可能减少数据库计算的次数,提高访问性能。但如果我们要在很多个分析场景中反复使用这个对应的数据聚合呢? 此时我们就应该求助于Prep,作为敏捷ETL工具,Prep可以随时“按需聚合”,聚合的结果可以作为独立的数据源被反复引用,如果结合数据提取,那么就进一步提高数据被重复使用的效率。可见,prep可以被作为“流程化的数据仓库”来使用,prep可以创建一个反复使用的数据流程,按需创建、修改灵活、引用方便、支持提取,因此可以大幅度提高数据的利用效率、减轻数据库的计算压力。在在这个过程中,关键的功能就是聚合。 前面我们说,聚合的背后是层次。因此创建聚合务必清晰计算的数据层次,是创建每个区域、每天的销售聚合,还是创建每个门店、每个品类、每天的销售聚合?按需创建的第一步是清晰需求。假设我们要将此前剔除退货后的正常订单,在以下的层次上做度量的聚合:每个类别(category)、每个子类别(sub-category)、每个细分(segment)、每个月的销售额、利润、数量和折扣。首先在此前的流程节点上添加一个新节点“聚合”,如下图所示。 接下来就要点击新增加的“聚合”节点,设置聚合字段了。代表层次的是需求中的维度字段,而聚合的通常是度量字段,将二者分别拖拽到右侧的分组字段和聚合字段区域,维度会展开为分组,度量会按照维度的分组聚合为数字,Prep Builder即可完成聚合过程。 在聚合中有一个关键维度是日期,日期是非常特别的字段,它不仅自带层次结构,而且具备度量的连续性质。因此,日期既可以用来做聚合的层次,还可以用来创建坐标轴。在这里,我们要在“每个月”的层次上聚合多个度量,不过当我们拖入日期(order date)后,注意,默认是以“摘要”的方式显示,因此看到的五行数据完全不是总体,而只是按照年度的摘要,而order date旁边的“889”才是真正的数据唯一值的数量。 因此,我们需要把日期从明细日期(年月日时分秒),提高到更高的层次(年月),这里就需要点击“分组”,调整日期的层次。也就是依据需求中的日期层次结构分组,而非按照数据源的明细分组。这里我们要聚合到“每个月”,比如2019年1月、2019年2月,需要选择“月开始日期”,也就是把每个月内的所有日期都截断到月,后面我们讲解日期函数时,会特别说明这个选项背后的日期函数——datetrunc()函数。  之后,我们把需求中的度量字段拖入右侧的度量字段即可完成。务必通过聚合后各个字段的行数来判断数据聚合的准确性。 2、在Prep中做聚合时,特别注意几点 (1)维度才决定详细级别,因此加入度量并不会更改数据的详细级别,不会增加数据的行数,只是从此前的“4个字段,1399行”改为了“8个字段,1399行”;度量只是增加了数据的标记数量。 (2)维度也可以加入右侧的聚合字段,因为分类字段是可以被聚合的(计数、最大最小值),比如我们看每个月有多少订单,可以把订单ID加入聚合字段,比如要看每个月有多少客户购买,可以把客户加入聚合字段(计数不同是客户数,计数是购买人次)。虽然技术上,度量也能加入分组字段,但通常没有实质意义,除非是像“年龄”这样身兼维度和度量两个类型的度量。 (3)聚合还可以间接起到移除字段的作用,相当于SQL查询,既减少了查询量,又实现了查询过程中的聚合。熟悉SQL的朋友,可以参考SQL语言中的group语法;实际上,这里之所以被称之为“分组”,大概率就是取了SQL中“group”之意。 (4)很多专业数据库的数据仓库,其实就是把频繁的聚合查询,以定期运行的方式提取到本地做了缓存,专业术语大概是“物化视图”,就是把定期把结果转化为实际存在的数据表,而非虚拟的查询过程。借助于Prep Builder的流程创建和Prep Conductor的流程发布功能,Tableau可以实现数据仓库的相关功能,并且可以在查询和物化视图之间随时切换,从而兼顾数据的实时性和读取效率。 3、迎接Fixed LOD新功能 在2019年拉斯维加斯的TC大会上,Tableau剧透了2020年的一个重大更新,就是把Desktop中Fixed LOD表达式迁移到Prep中来,这是我最为期待的功能之一。就在本书即将定稿之时,这个功能如期而至。 Fixed是“指定”之意,LOD是详细级别、层次,Fixed LOD表达式本质是指定层次的聚合,即Aggregation on fixed LOD。上面的“聚合”也是指定层次的聚合,二者有什么区别呢? 简单的说,通过Prep的“聚合”一次只能完成一个层次的聚合,而借助于Fixed LOD聚合,则可以在已有详细级别之上,指定其他层次完成聚合,因此fixed LOD完整意义是指定独立的层次完成聚合,这里的独立层次,是相对于当前数据明细级别的其他层次,即Aggregation on external fixed LOD。 当大家学习完最后“LOD表达式”章节,会更加深刻地理解这个过程。 比如在商品交易为明细级别的超市数据中,我们想计算每个用户的首次购买日期。可以假想在Excel的明细中增加一个辅助列,不管这个客户购买过多少次交易,辅助列都显示它的首次购买日期。如下图所示: 在Desktop中,在视图详细级别(商品)上增加另一个完全独立的详细级别(客户)的聚合,只能通过fixed LOD表达式来实现,不过这个高级计算对于业务人员而言过于晦涩。IT或者少数高级分析师可以在数据整理时加入到数据整理的模型中来,简化其他人的操作,这就需要Prep了。 此前,Prep也能通过聚合间接实现上述的功能。原理是先计算每个客户的最小订单日期(聚合),然后再通过连接(join)把聚合结果关联到原数据后面。如下所示: 而在Prep Builder2020.1版本中“fixed LOD”的新功能,可以不经过聚合和连接两步操作,直接指定详细级别完成聚合,从而适合所有人轻松完成独立详细级别的聚合。 只需要在“指定详细级别”的字段,创建出计算字段即可。不过刚推出的版本翻译为“固定LOD”,会让很多人不知所然,如果改为Desktop中通用的Fixed LOD,有助于大家更好的理解。 在设置界面,Tableau设计非常友好,时间用坐标轴,最小值和最大值分别点击两侧即可快速拾取。注意左侧历史记录中的表达式,与后面的fixed LOD语法完全一致。注意通过字段右侧的数量来判断,和上面先聚合再连接(Join)的结果是一致的。 与Fixed LOD同时加入Prep计算的,还有高级计算之排名(rank)。这就可以把一部分复杂的数据整理过程从可视化环节前置到数据整理环节,更好的发挥专业分析师和IT部门的技术优势。 随着技术的平民化,分析师和企业就可以“用金钱换取时间”,从而获得竞争的优势。 摘自我的书稿草稿,敬请期待

【零售】Tableau LOD+TC做客户交叉购买分析(上)2.0更新

【2020年4月更新】【Tableau高级】LOD实例:基于订单的购物篮分析   上文提供了更加精确的购物篮分析方法。 by 喜乐君 //本文已经加入即将出版的《大数据可视化:原理与方法》 今天客户咨询我一个问题,忙完了细细思考,非常值得写一篇小文章梳理其中的逻辑。此类的问题经常被人问及,之前也零散地分享过,终归不够系统,此次尝试说一下相关的业务需求和背后的技术逻辑。 本文阐述一种角度——一次Fixed LOD,加一次TC表计算(合计百分比)。 PS. 复习了一下高中数据并集和交集 😄 Tableau中左右连接Join,两种基本形式是inner Join和outer Join,前者是内连接(并集),后者是外连接(交集),分别用第二个字母来表示,就是A ∩ B(并集), 和A U B (交集)。 一、来自业务的需求说明 在销售领域分析中,有一个特别重要的领域是购买的交叉分析,比如“同时购买多个品类的客户数量”、“购买品类A同时购买品类B的客户占比”、“仅购买一次的客户中,不同品类的分布情况”等等。这些问题一般不会直接计算金额、商品数量等绝对度量的分析,而更偏重于结构性分析,特别是从顾客数量、品类数量、订单数量等高于商品层次的角度。 也就是,交叉分析往往是考察多个维度直接的结构性关系,而非直接深入单个维度的度量比例。 比如我们要查看客户的忠诚度,一个很重要的角度就是查看“不同购买频次下的顾客数量及占比”这样的分析视角。转化一下视角,从下图来看,就是不同品类的交叉情况。后面我们结合超市数据,分析这个图的可视化过程。 二、客户与品类的交叉分析 我们站在销售经理的角度,尝试去分析不同品类的客户购买情况。我们首先可能会做每个分类的客户数量分析及其相关分析,比如购买金额、购买数量及其%占比等。不过,结构性分析的重点是查看另一个维度的对比或者趋势,比如不同年度的客户数量。 1、无关计算的初级可视化 这个时候,我们可以会想把年度作为颜色加入可视化对比(左下图),不过显然,看上去还不错,但是解释起来破费口舌,这说明我们没有很好地表述可视化焦点。重申一下题目“分析不同分类的客户数量在多年的对比趋势”,趋势应该是关键,所以我们更换品类标题和作为颜色标记的年,就会立刻切换图形,考虑到对比的关键是趋势,面积图自然会比条形图更加直观(右下角)。 在这里,我们可以很明显地发现“技术”的客户数量在2019年增速放缓,被“家具”迎头赶上,这也是折线图非常直观的地方。 2、从直观趋势到内部结构性分析 不过,上面的图形还是停留在初级的分析层面,稍微深一点的分析视角,我们需要从宏观的多年对比回到当下,比如分析2019年的内部结构问题,这样年度就不再是值得关心的焦点,重点是结构。依然从客户和类别的角度出发,我们可以提出更多的结构性问题,比如: 有多少客户仅仅购买了一个品类?多少客户购买了两个品类?多少客户购买了三个品类? 主要分布在哪些品类上? 仅仅购买了A品类、仅仅购买了B品类、仅仅购买了C品类,以及购买了所有这些品类的客户占比是多少? 购买某个品类的客户,同时购买其他哪些品类的概率更高?(连带购买分析) 比如先说第一个问题,哪些品类被反复购买,而哪些则被客户冷落?类似问题的背后,是查看每个客户购买的品类的次数,以及不同次数下的品类的分布。完整的说“(2019年)购买一个品类、两个品类、三个品类的客户数量分别是多少?” 这里的客户数量需要聚合,同时还需要客户层面的一个字段作为维度——每个客户的购买品类数。需要使用一个层次的(辅助计算)字段,又不能使用这个层次的维度字段本身,因此我们就需要使用LOD表达式提前计算这个结果:{fixed 客户名称: countd(类别) } . 这个问题,可以参考15大详细级别表达式的第一个题目。(【Tableau】15大详细级别表达式-会员分析案例(对话版)) 以这个字段作为维度,就可以查看购买了1个类别、2个类别……3个类别的客户数量(下图左上角)。不过这只是刚刚开始,我们还需要每一个条形图中更多的结构性组成,因此,我们把类别作为新的维度加入标记——颜色之中,发现了什么? 你会发现次数的坐标轴远远超过了此前的坐标轴对应的数量,为什么?因为这里购买2个以上的分类中客户出现了大量重复,以至于购买了三个类别的客户数量出现了三次——购买了A的客户数量,比如等于购买了B和C的客户数量,毕竟这些客户都是购买了三个类别。可以参考最开始的那个交叉图。 更专业的角度说,这是因为左边的图的详细级别停留在“客户购买的品类频次”,因此聚合为了三个数;而后者的详细级别进一步下沉,到了“客户购买频次” X “品类”,于是从三个标记,增加到7个标记。 结合上图下面的单品类情况图,我们发现,有23个客户仅购买过一个类别,其中仅购买办公用品的最多,占19人;有126人购买过两个类别,其中技术的连带率最低,仅有52人被连带购买了此分类;有622人购买了全部的三个类别。为了更清晰的看到分布,我们可以使用下面的这个图(借鉴了上面的图,但是比例和数值不对等,注意): 这样的绝对值虽然客观,但是不容易对比,我们还需要转化为百分比。从全部客户的角度看,上面的每个数值需要除以全部的客户数量,在没有筛选的情形下,我们使用总计百分比的结果,和除以{ countd(客户名称)} 的结果是一致的。 因此,增加“快速表计算”——“合计百分比”之后,默认就是上图中间左侧的图形。注意这里的百分比,购买2个类别和3个类别的各占比百分比合计会大于1,为什么,因为客户有重复。 因此,在这里仅购买过办公用品的19人占比2%,技术和家具分别占比不足1%;购买办公用品同时连带购买其他一个类别的客户123人占比16%,同时购买了三个品类的客户占比81%。——这些值都是和全部的客户总数比较。 这个可以使用中间的图形,也可以使用下面的图形来补充增强——在此前的数值基础上,增加更多的角度: 前面的数字代表交叉购买的类别数量,通过绝对值和百分比来突出具体的指标。这里只用了一个一次LOD计算和一次表计算,就可以完整展示不同交叉购买下的分类占比。很明显,这里的三个类别连带购买率占比很高,达到了81%;两个类别的连带购买率中,技术最低仅为7%Continue reading “【零售】Tableau LOD+TC做客户交叉购买分析(上)2.0更新”

【平民数据科学家】Tableau学习锦囊与“三剑客”套装

作为Tableau的深度粉丝,每月第三周的Tableau课程将如期举行。 听说奥马哈两个老头的“脱口秀”刚开始无人问津,至今组织了40多年,日拱一卒,积年累月,每个人都能达到未曾预料到的高峰。这也给了我继续前进的勇气,那就是每个月一次的Tableau入门及进修课程。 本期的课程将引入全新的课程讲义和最新内容,进一步弘扬Tableau“大法”,帮助更多的业务人士成为“平民数据科学家”,从数据挖掘价值,驱动业务成长。全新改版的课程重点包含了以下特点: 升级版的「企业级培训讲义」 升级版的LODs内容与计算分析案例 最新的高级互动内容——集动作和参数动作 一、 学习背后,最重要的是背后的原理 先哲和伟人都说,所有现实的事情,都是过去“类似情景”的重复;生活如此,分析过程也是如此。善于总结经验的人能从失败和挫折中收集绕过困难并不断前进的方法,并不断的总结成为原理和方法论。 “世界上最重要的事情是理解现实如何运行,以及如何应对现实。……良好的原则是应对现实的有效方法。” 学习Tableau,都是从解决一个个小问题开始的,随着学习的深入,我们需要知道“为什么选择这样的图形?”“为什么要区分字段的连续和离散,有何影响?”“如何分析有关详细级别表达式的问题?” “如何选择计算?”越来越多的问题,背后都会归结到相似或者相同的情景中。 借鉴中外优秀的经验,我总结了很多实用的方法,可以说是Tableau学习路上必备的锦囊。 如何选择图形? 如何选择计算? 如何分解包含LODs的问题并计算? 如何从数据整理到数据共享? 如何展开会员分析? …… 古人说教学相长,在分享的过程中,我也获得了非常多的启发,并在不时修改和完善各类使用说明和方法。更希望在交流的过程中帮助到更多的人。 二、Tableau高级分析和互动的“三剑客” 在自己多年学习Tableau的过程中,慢慢形成了自己对Tableau学习脉络的总结,特别适合于没有技术背景的业务人员。Tableau学习“入门极其容易,成长坡道又足够长”,因此非常适合业务人员把它作为进入大数据分析和业务分析的敲门砖,以及深挖数据价值、驱动业绩成长的利刃。 如果从高级分析和展示方面总结,我想Tableau有令人敬畏的“三剑客套件”,分别是LODs、TC、和Set Action。 LODs是高级计算和深度分析的翅膀,无翅膀·不飞翔 TC表计算增强了Viz对比分析,“无对比·不分析” Set Action则让用户分析无限可能,真·无限可能 1、LODs 分析从问题开始,比如“各业务板块相对去年的同期增长如何?”“哪些销售业务员的回款比率更高?” 一般而言,每个问题都对应着不同的数据关系类型,进而对应不同的最近可视化方法。 但是,随着业务问题的复杂化,我们需要把问题拆解成为不同的层次,同时要在不同层次间保持一致性。这就涉及到一种高级操作:在一个可视化视图中,希望包含多个详细级别的数据聚合。 问题很复杂,但是Tableau提供了无需复杂代码的解决方案:详细级别表达式。本质上,每个详细级别表达式,都是一次独立的SQL查询和聚合,然后再按照视图的要求展示出来,因此,可以理解是VizQL技术的高级形式,一次隐形的拖拽转化为SQL的过程。 曾经有Tableau用户给我发信息,说“之前几乎看遍了官方文档,还是模糊的理解,直到看到了你的资料,一下子就理解了!” 当时我特有自豪感,我之前说要“做最好的华文非官方LOD帮助文档”,慢慢就实现了。 上个月在企业讲课,我对LODs的部分讲解甚详,但是最后总感觉有一点点没有说明白的地方,结合大家的提问,回来又详加分析,之后更新了LODs系列的第二、第五篇文章,特别是修改了Fixed LOD的介绍图,并进一步分为了三个类型,明白了“复制”和“聚合”的区别。 2、TC 表计算是高级分析的精髓所在,为什么?因为分析的关键就在对比,没有对比就是没有分析。以财务分析为例,清晰的知道当前的收入、费用、利润、现金流很重要,但是绝对值从来不能代表质量,充其量代表数量而已。即便同一个行业,收入过亿的企业,很可能就在破产的边缘,而另一家收入百万的企业,很可能是明日之星,如何分辨二者的质量?对于对比,最佳的指标是比率。 例如,在财务分析中,通过费比、毛利率和利润率,可以分析企业业务的健康度;而查看流动比率、速动比率、现金比率则可以直观洞察企业的负债水平。在大部分情况下,绝对值用于分析规模和排名,而比率用于分析质量和对比。 在Tableau中,表计算方便而快捷,为各类对比分析提供了最佳通道;快速表计算提供了常见的各种便捷用法,甚至可以两次表计算,而表计算无需从数据源刷新数据的特性又提高了计算的速度。 在熟练使用LODs和表计算之后,我们就可以熟练的完成大部分的复杂工程;如果把分析结果视作一件洞察业务的作品,LODs和基本计算负责完善分析作品的框架骨骼,表计算则是最好的装饰大师,负责在视图基础上二次聚合以深化对比分析。   3、Set Action Tableau被视为“可视化的黄金标准”,因为它简单、易用、快捷、美观;而把如此美妙的可视化分析呈现给最终用户时,我们还希望通过用户的自定义互动,进一步发挥自助化分析的价值。伟大的敏捷BI工具应该兼具后端设计和前端交互的友好性和丰富性。 在新版本的Tableau Desktop中,Tableau推出来自LODs以来最伟大的功能(我认为没有之一)——Set Action集动作。我们知道“集”(set)可以用于行/列、标记、计算字段等,“集动作”增加了修改集成员的环节,通过视图的选择即可灵活修改集的结果,相当于为它插上了翅膀,因此借助集实现无穷无尽的交互。 而在即将公布的最新版本(2019.2)中,Tableau推出了set action的双胞胎:parameter action参数动作,增强了修改参数的环节,同样可以进一步增强Tableau在终端用户方面的交互性。   后记:学习是通往未来最近的路 Tableau会帮助越来越多的人理解和使用数据,并帮助更多人成为“平民数据科学家”。借助不断升级的Tableau分析套装和不断完善的学习知识,Tableau可以在你我的成长中助一臂之力。Continue reading “【平民数据科学家】Tableau学习锦囊与“三剑客”套装”

【Tableau】详细级别表达式LOD_语法与逻辑 (2)

详细级别表达式(LOD)是学习Tableau的难点,起初感觉容易,但是随着越来越多的高级分析应用到LOD表达式,你会发现它有各种变化无穷的用法,又容易受外部筛选器、计算影响。上一篇我们介绍了LOD的基础概念、背景知识以及常见用法,这一篇更深一层介绍语法和逻辑——特别是Fixed LOD的三种情形。 理解LOD的关键有三个: 什么是LOD?(详细级别)区分 行级别与视图级别; 理解LOD表达式的功能,与维度、度量的关系; 理解不同类型LOD表达式语法的应用场景   一、LOD表达式与视图详细级别 1、何为详细级别(LOD) 首先回顾一下上一篇的重点,什么是LOD?LOD=level of detail,代表数据的详细级别,不同的详细级别,对应不同的数据聚合度和颗粒度。最高的数据颗粒度就是行级别的数据,最低的颗粒度则对应着一个完全聚合的数值;中间的数据颗粒度就是常用的视图可视化详细级别(Viz LOD)。 一般来说,在Tableau中,一个视图对应着一个视图详细级别,比如我们把year、area、profits三个字段加入视图,year和area(维度)决定了详细级别的层次,profits即详细级别上的内容。在主视图详细级别(year*area)之外,我们可以使用LOD表达式,引入另一个详细级别的数据。 关键词:详细级别……增加维度……标记数量增加 在 Tableau 中,我们将主可视化聚合级别称为其“详细级别”……向视图中添加维度来增加标记数量的过程称为设置详细级别。……某些情况下,向视图中添加度量可能会增加视图中标记的数量。但这与更改视图的详细级别不同。 说到这里,我们说一下官方文档中的一句话:“放在(下图方框中)任何位置中的维度和集字段组成视图详细级别。”因为维度和集字段会形成可视化聚合视图。 更改详细级别,需要增加维度(维度或集字段);而不是度量。 2、LOD的意义与语法逻辑 理解LOD,就要深刻理解官方的介绍,“借助详细级别表达式,无需实际将这些维度拖入可视化内容中, 您即可确定在计算中使用的详细级别(即维度)。 您可以独立于可视化详细级别, 定义应以什么详细级别来执行计算。”——不拖拽字段影响视图,又通过LOD表达式背后引用数据。视图是用户看的见的,计算则是隐藏其后的逻辑。 具体而言,三个LOD表达式的使用场景和语法分别如下: { [FIXED | INCLUDE | EXCLUDE]  <维度声明>  :  <聚合表达式>} FIXED | INCLUDE | EXCLUDE 是定界关键字,制定了LOD的范围; <维度声明>,指定聚合表达式要联接到的一个或多个维度。使用逗号分隔各个维度。 : 冒号用于分隔维度声明与聚合表达式。 <聚合表达式>,聚合表达式是所执行的计算,用于定义目标维度。 二、LOD的语法逻辑 1、include与exclude LOD include和exclude LOD,是在当前视图的维度基础上,增加一个新维度(include把不在视图中的维度引用到视图数据中,但不改变视图本身),或者排除一个已有的视图维度(exclude把视图中的维度排除后计算,但不改变视图本身的维度引用)。因此Include和exclude LOD是依赖于视图详细级别的增减。我们用下面的图形形象地表示可以看见,从当前视图出发(深绿色箭头),最终的结果又返回到视图显示出来(红色箭头)。 !【增补】最新的图片上,我们增加了两个词:复制和聚合。使用exclude LOD,我们获得的结果标记数量明显会少于视图的颗粒度,因此同一个数据会在多个地方“重复出现”,我们称之为“复制”;而使用 include LOD,我们获得数据标记数量会高于视图颗粒度,也就是视图中只有三行,include LOD可能返回一个10个数据的数组,此时结果默认会聚合,按照视图的详细级别分组、聚合。Continue reading “【Tableau】详细级别表达式LOD_语法与逻辑 (2)”