第13章 样本控制与假设验证:交互

第13章:样本控制与假设验证——交互作用在统计分析中的原理与应用方法。

《业务可视化分析:从问题到图形的 Tableau 方法》第一版本 第三次印刷版本

13.1 在Excel、SQL、Tableau中构建分析样本

不同的工具,筛选的位置和查询逻辑有明显的差异,随着技术的发展,功能和易用性都在提高。这里以Excel、SQL和Tableau为例介绍常见的筛选方法。

13.1.1 Excel与SQL中的静态筛选

在Excel中,基于数据明细表,可以通过自定义选择、简单计算或通配符等多种方式筛选数据,多个筛选依次查询,样本逐步缩小,甚至可以基于单元格颜色筛选,并且马上看到结果,如图13-1所示。

Excel中的筛选具有“所见即所得”的优势,适合少量数据的互动查询。但是,在明细数据中,不能针对某个详细级别的聚合完成筛选(比如子类别的利润额)——涉及聚合,属于数据透视表的范围。

图13-1 Excel中的筛选

遇到大数据量、查询聚合和筛选交叉的复杂情形,窗口式的SQL查询方式就更有优势。Power BI中内置的Power Query组件也可以视为窗口查询的一种方式。

Excel和SQL的差异,就像有人把所有的积蓄都放在自家抽屉里(所见即所得、随用随取一览无余),而有人则把钱存进银行(平时只看余额不见钱币,通过柜台随用随取)。

SQL是数据库的窗户。用户借助SQL既可以实现明细的筛选,也可以实现特定详细级别的聚合筛选器,只是语法的差异。如图13-2所示,左侧代表简单的明细筛选查询,右侧代表建立在明细筛选、聚合及其筛选的过程——判断的依据就是有无聚合函数和“group by”字句,因为group by后面的维度是聚合的依据。

图13-2 使用SQL对明细筛选,和建立在明细聚合上的二次筛选[1]

在图13-2左侧的select…from…where…语法中,where是对明细的筛选,这里既有维度筛选(类别='办公用品'),也有度量筛选(利润<0),对应的数据明细是“办公用品类别,且利润小于0的所有交易”。这个查询过程与Excel中的按照字段筛选结果相同。

而图13-2右侧的语法则包含了两个筛选过程,首先是where语法对应的明细筛选(同左侧的明细筛选器),其次是having语法对应的聚合筛选(聚合详细级别是“类别*子类别”)。这个查询过程,相当于Excel明细筛选和数据透视表聚合、筛选的结合。

可见,对大数据而言,SQL虽然需要一点学习的成本[2],但是它的交互性能、查询效率和通用性是无可匹敌的,它是数据世界的通用语言,因此成为大数据分析中的通用技术。

13.1.2 在Tableau中创建筛选的基本方法

相对Excel,SQL实现了查询与聚合相统一,但也有它的弱点,它和分析相分离。SQL通常是IT人员使用的工具,他们是数据库的“守门人”。然而分析中最重要的业务逻辑却掌握在业务人员手中,如何实现数据查询、聚合和分析的“三合一”,并尽可能简化前两者的难度,从而推动业务人员自助分析呢?

于是,敏捷BI工具开始兴起,其中的代表就是创造性地把“拖拉曳”的交互自动转化为SQL查询的Tableau。Tableau建立在大约20年前斯坦福的科研成果之上,如今,这一技术已经深刻地影响了几乎所有的BI软件厂家,甚至人机交互的方式,而其联合创始人Patrick M.(Pat)Hanrahan教授也因其在图形方面的突出贡献荣获计算机界的诺贝尔级别奖——图灵奖。图13-3展示了Tableau在早期原型系统(北极星,Polaris)数据的查询、加工、转化与图形化的方式。

图13-3 Tableau原型系统中的数据转化与流行示意图[3]

如今,Tableau已经把这一交互技术发展到更高的详细级别,并延伸到ETL和服务器领域。建立在字段分类基础上的数据查询、聚合、交互、计算融为一体,“帮助人人理解并使用数据”。

如图13-4所示,使用Tableau Desktop直接连接数据库,无须SQL语言,拖曳相应字段到视图中,通过合理布局位置就可以实现查询、聚合和可视化展现的全过程。这正是它最迷人的地方。

图13‑4 使用Tableau Desktop拖曳完成分析

在图13-4中,通过拖曳就可以创建维度筛选、行级别度量筛选、聚合筛选,这些工作表中的筛选器统称为“快速筛选器”。Tableau“拖曳即查询、视图即聚合”,它结合了Excel的简易与SQL的性能,又在可视化方面迈进一大步。筛选过程也通过图形UI界面和分类变得异常丰富。

13.2 样本控制的形式与归类

在单一工作表中通过拖曳创建的筛选器,本书称为“快速筛选器”,筛选器根据类型不同有优先级次序;而在多个工作表整合的仪表板中,关联筛选器和共用筛选器则实现了交互查询和筛选控制。

13.2.1 快速筛选器的常见形式与优先级

有多种方式可以创建分析样本,典型的示例如下文橙色部分所示(这里使用橙色代表样本,蓝色代表问题维度,绿色代表答案)。

上述是基于维度的筛选器,是相对容易理解的筛选类型——因为它们的样本字段和筛选条件字段是相同的。只要在筛选条件中出现了度量,问题就会变得复杂,特别是当筛选字段与视图维度不同的时候(下面用方框指样本范围中的筛选字段,而用下画线代表筛选条件)。

你会发现,不管是维度还是度量、是明细还是聚合条件、是引用字段本身还是借助计算、是单一字段还是组合,都可以控制分析的样本范围。

在分析中控制分析样本的功能,统称为“筛选”;而在视图或者仪表板中控制筛选的对象,称为“筛选器”。筛选和筛选器如何分类呢?

从“第一字段分类”出发,可以把筛选分为维度筛选和度量筛选——特别注意,这里的度量是问题详细级别的聚合度量。由于维度是聚合度量的依据,因此维度筛选器比(聚合)度量筛选器优先。如图13-5所示,在“2020年,各省份的销售额总和”条形图中,将“销售额”拖曳到筛选器,并选择“总和”(代表聚合筛选),设置聚合范围“至少300000”,结果就是先筛选年度,再筛选视图度量。

图13-5 维度筛选器与(聚合)度量筛选器的优先级,以及维度与聚合的关系

在样本控制中,一个关键就是不同筛选的优先级顺序,考虑到多种计算对样本范围的影响,因此这里从计算的角度理解。

考虑到问题是从行级别到问题详细级别的聚合过程,所有的计算都是在特定详细级别(LOD)上的计算,因此筛选器又可以分为“行级别筛选”(filter on row level)与“聚合筛选”(filter on aggregation)两种。“聚合筛选”又可以分为“依赖于视图维度的聚合筛选器”和“指定详细级别的聚合筛选器”,后者称为“条件筛选器”。它们的优先级如下所示(“>”代表左侧优先级更高)。

(指定详细级别的聚合)条件筛选器>维度筛选器(都是行级别)>(依赖于视图的)聚合筛选器

笔者之前还在犹豫,诸如[利润]<0这样的行级别的度量筛选应该放在哪个位置,甚至想把行级别的度量筛选和聚合度量分开。当笔者从数据明细和问题两个详细级别的角度重建了问题理解和字段分类时(见第3章),这个疑惑就烟消云散了——[利润]<0确实是行级别的计算,但是它的结果是一个布尔判断,布尔属于维度,而非度量。行级别的计算结果,最终要么以维度的方式出现,要么就是聚合度量,在问题详细级别,是没有行级别的度量的,所有的度量都将被聚合。

这里提供一个包含多种筛选器类型的案例,从而说明它们相互之间的关系:在2020年,销售额总和前10名的客户,在公司细分中亏损的利润总额和盈利的利润分别是多少。

(1)日期维度筛选器:2020年 (背后的计算是YEAR([订单日期])=2020,布尔维度)

(2)条件筛选器:销售额总和前10名的客户,前/后N的筛选,是条件筛选的特殊形式

(3)离散维度筛选器:细分=消费者 (本质是布尔维度)

(4)基于行级别计算的维度筛选:仅保留利润亏损的交易明细([利润]<0)(布尔维度)

如图13-6左侧所示,把“客户Id”拖曳到筛选器选择“顶部”条件并设置“前10,依据:销售额总和”,之后加入订单日期(选择2020)和细分(选择公司),由于条件筛选器优先,因此获得的结果是“多年销售额总和前10名的客户中,哪些人在2020年、公司细分有利润贡献”,这里的颜色分类来自行级别的利润判断([利润]<0)。

图13-6 理解多个筛选器的优先级及调整方法

如果要把“日期维度筛选”的优先级提高,就要借助“上下文”的方式调整,在“订单日期”筛选器上右击,在弹出的快捷菜单选择“添加到上下文”命令,筛选器变为灰色背景。如图13-6右侧所示,此时结果就是“2020年的所有客户中,销售额总和TOP 10的客户,公司细分的利润(总和)”,颜色标记与左侧相同。由于筛选范围变小,数据标记就明显增加。

纵观整个Tableau的样本控制的相关功能,有全局的筛选(数据源阶段),有小范围的快速筛选(局限单个工作表内部);有基于已有字段的筛选,更多是基于计算的筛选。本书很难完整地把所有的关键一一列出,这里笔者把自己的经验汇总为图13-7,可以作为Tableau“操作顺序”的宝典。

图13-7 Tableau中典型的筛选器、计算次序

除了强大的筛选功能,Tableau还支持多个工作表关联控制或者统一控制,这就是最接近业务主题分析的仪表板功能。

13.2.2 关联筛选器和共用筛选器

在基于仪表板的探索分析中,筛选的功能才真正重要起来。分析师需要考虑以下几个要点。

图13-8所示的仪表板中整合了多个工作表(分别是矩阵条形图、散点图和排序条形图)以及多个筛选器(订单日期、类别、细分)。激活矩阵条形图右侧的漏斗筛选,就相当于增加了一个“筛选动作”,默认就能以点击的形式筛选其他所有工作表。而右侧筛选器默认来自单一工作表,通过在下面菜单中设置“应用于工作表”,则可以将筛选器设置为共用的筛选器。

图13-8 在仪表板中使用样本筛选功能

仪表板中的筛选器,依然遵循单一工作表中的筛选器优先级,因此必要时可以调整。

具体的技术细节非本书所能覆盖,希望了解更多Tableau的筛选知识的读者,欢迎翻阅官方文档或者《数据可视化分析(第2版)》一书的第6章。

13.3 基于中间变量的高级样本控制

上述的样本范围是直接使用字段或者简单计算构建筛选样本的方式,这也是交互的最基本、最主要的形式。即便是借助计算,样本范围也是“一次性”的,不能保存,难以对比。相比之下,各类计算机编程语言都设置了“变量”作为中介,高级的分析也需要看这样的中间变量,才能实现动态标杆分析、动态选区占比等功能。

业务用户可能觉得“变量”有些生涩难懂,其实它们是求解方程的必备要素,这也是代数历史上的伟大进步,敏捷分析历史上也是同理。

X=1, X+Y=3

“变量”是传递数据的工具。基于中间“变量”的筛选和计算可以反复使用,Tableau中分为两种基本形式。

变量作为样本的载体,再以“动作”为更新方式,Tableau中的交互就瞬间丰富起来。Tableau中的交互方式如图13-9所示,筛选、高亮和URL跳转代表传统的一次性交互,而参数和集代表以中间“变量”为媒介的高级交互。这里仅做必要的说明。

图13-9 Tableau Desktop中的主要交互方式

参数是最简单、最普遍使用的变量工具,它是全局范围的。

比如,为了让领导能够自定义选择“TOP分析”的范围,可以设置一个参数控制视图的范围,如图13-10所示。

图13-10 通过参数控制筛选交互的范围大小

Tableau中的参数简单灵活、创建方便,不受字段类型限制,可以在数据源阶段(比如加入自定义SQL之中)、可视化阶段等多个地方使用,因此是最普遍的变量容器。

但是,Tableau的参数只能传递单一值,如果需要多个变量(比如选择多个省份之后,计算这些省份销售额在全国的占比),而此时就需要其他变量工具了——这就是伟大的“集”。

在数据类型中,“集”是容纳多个值的重要类型,比如{1,2,3}{中国,德国,塞尔维亚}。Tableau中的“集”和LOD计算,背后都是这样的多值计算。笔者在第3章把“集”、“组”和“字段”作为高级字段类型加以阐述,就是希望读者更深层次地理解集、条件筛选器、FIXED LOD等背后的统一性,如图13-11所示。

图13-11 筛选、集和组的Tableau图示

单一变量的参数和多变量的集,是从基本视图通往高级业务分析的必由之路。借助交互带来的快捷假设验证,实现业务分析效率的提高。

在《数据可视化分析(第2版)》第7章,笔者深入介绍了基于集的部分高级应用,如图13-12所示,结合集动作功能,可以任意选择省份更新动态省份集,集更新计算,计算更新图形。

集的功能如此强大,因此笔者把它与数据关系模型、表计算和LOD表达式并列称为“Tableau高级分析的四大金刚”。在Tableau中,作为变量的参数和集也有明显差异,这里简述如下。

鉴于本书的主题限制以及软件的差异性,具体的交互技术不在此展开。关于Tableau交互的相关内容,可以参考《数据可视化分析(第2版)》第7章或者官方相关文档。接下来,笔者就借助“购物篮关联分析”介绍如何在指定详细级别完成聚合。

图13-12 借助集和集动作动态计算选定省份的销售额占比

[1] 这里的数据库使用Tableau中的超市数据,基于本地MySQL数据库查询。

[2] 为了写这一段,笔者阅读了图书《SQL基础教程》(MICK著),发现SQL比笔者想象中容易。

[3] 图片引用自Polaris: A System for Query,Analysis, and Visualization of Multidimensional Databases,作者:Chris Stolte, Diane Tang, and Pat Hanrahan,vol. 51 | No. 11 | communications of the acm(2008年11月)。

📖 相关文章
[2024.3] Tableau Table官方“超级表格”已来!
《解构Tableau可视化原理》勘误
《解构Tableau可视化原理》目录
 【致知篇44】逻辑世界:数据、佛法与体系
使用Tableau参数操作传递多个值
——————————————————————————————

No comments yet