编者按:Tableau在2020年最重要的产品功能之荣耀,在我看来只能属于“数据关系”。可惜的是,大部分用户还停留在关系和混合的漩涡之中,上个月某客户30多个表的Join让我看后大为惊骇,实在不忍心如此美好的产品被用成这般模样。在新修订的《数据可视化分析:Tableau原理与实践》书中,笔者进一步阐述了从union、join到relationship的过程,并以家庭关系作喻,帮助大家形象理解。
——Tableau 帮助人们看到并理解数据——

——引自第四章 数据合并与数据模型(10月印刷版)
4.3 集大成者:从数据连接、数据混合走向数据关系Tableau 2020.2版本推出的数据关系,是全新的功能,而非简单的升级。为了完整地理解它的设计原理,从而真正掌握它的用法,本书还需要进一步对比数据连接与混合的深层次差异,并从“取长补短”的角度引出“数据关系”。
4.3.1 并集、连接与混合的关系与优劣
1.并集、连接与混合的关系图
在学习Tableau一年多的时间里,笔者一直未能洞察这几种合并方法的本质区别,直到有一天凌晨醒来勾勒了它们的关系图,如图4-32所示。

图4‑32 数据并集、连接和混合的先后关系对应图4-32,总结为几句话:
- 数据并集优先于数据连接,二者都是在数据源阶段完成的。
- 连接是行级别的:并集和连接都是在行级别的匹配,但不包含任何聚合过程。
- 混合是聚合级别的:数据混合是在构建完主视图之后的,视图即聚合,混合是先聚合再匹配。
- 阶段:并集与连接是数据准备,数据混合是基于已有视图的增强分析。
- 结果:数据准备阶段的并集与连接生成的是稳定不变的、静态的数据表(物理表),而数据混合生成的是随主视图变化和匹配字段调整而变化的、临时查询的数据表(逻辑表)。
2.并集、连接与混合的原理性对比
基于上述关系,在4.2.2节总结的基础上,再进一步理解它们的区别与联系,就轻松自得了。从几个角度展开:数据表的行级别特征、性能影响与是否具有重复可用性。角度一,多个数据表的数据结构(第2章所讲的表的层次)。
- 结构完全相同:字段及描述的业务完全相同的数据用并集(Union)合并,常见于本地文件;
- 表层次一致:有共同字段、详细级别相同的数据表可以连接(Join)合并;
- 表层次不一致:数据量特别大、不同详细级别的数据,推荐使用数据混合。
角度二,性能影响。
- 由于连接(Join)的表比较多,或者数据量比较大,或者多个表的层次不一致,都会导致行级别匹配查询时缓慢,增加数据库处理负担;而且不管分析时是否使用其中的部分字段,连接都会提前匹配在一起——生成一个所谓的“大宽表”等待分析。
- 由于混合是在视图层次,即某个层次的聚合基础上,再相对应地匹配另一个数据源聚合查询,两次聚合查询(相当于SQL中的Group By语句查询)是独立查询,之后匹配,相比连接的行级别匹配,性能有了本质的提升,因此对服务器的性能影响最小。
角度三,视图是否具有重复可用性。由于并集与连接是在数据准备阶段,先于视图创建的,是在行级别匹配生成的稳定不变的数据源,因此它们的结果是可以持续使用的数据源——基于这个数据源可以构建无数工作表、仪表板和故事。由于混合是在可视化阶段的,后于视图创建的查询,是基于主视图的层次而向辅助数据源发起聚合查询,它必须依赖于视图和数据源的关系。其优势在于性能好,而由于这种查询的临时性,聚合查询的结果是不能保存的,无法反复使用的。
3.数据关系:鱼和熊掌皆得
古人言“鱼与熊掌不可兼得”,那是无可奈何,如今,技术进步创造各种不可能。有没有一种创造性的方法,避免连接(join)在处理不同表层次时的数据冗余,但要像连接确保匹配的稳定性;避免混合(Blend)的反复构建,但要保留混合的聚合性能呢?“鱼”要有,“熊掌”也不能少!这就是Tableau 2020.2版本的“数据关系”。通过数据关系建立数据模型(Data Model),不仅具有数据混合的灵活性,而且具有数据连接的稳定性。不仅支持行级别的一对一连接匹配,也支持基于行级别一对多的匹配自动聚合到同一个层次再连接。几乎是身兼连接的稳定、混合的灵活和Prep Builder的层次聚合众多优点于一身。
4.3.2 从物理表/层到逻辑表/层:数据关系的背景与特殊性
数据关系是如何以一种全新的框架,解决了连接和混合的不足,同时又集成了二者的优点,并与并集、连接融为一体的呢?回答这个问题需要先理解一个背景知识:Tableau定义了两个层次——物理层(Physical Layer)和逻辑层(Logical Layer)来理解数据匹配的两种方式。关键就在于何为物理,何为逻辑?
1.物理与逻辑的分界
何为物理,何为逻辑?先从大家熟悉的“人”与“公司”背后的设计说起。我们每一位自然人都是真实存在的、具有自由意志的生物,社会学称之为“自然人”,此为“物理”(Physical),即“固定的、不变的”;而自然人所开设的公司只是法律意义上的实体,法律称之为“法人”——法律意义上的拟人化,“法人”没有独立意志,要依赖于董事长、总经理等岗位来确保运转,甚至需要一个人来代表它,即“法定代表人”,这种存在依赖于法律、章程等人造的环境,此为“逻辑”(Logical),即本身不存在但人类赋予它逻辑上的存在意义。“逻辑”的存在既然是人为的,因此就是灵活的、多变的、不稳定的。“法人”可以按照法律设立,也可以按照法律撤销;所以每天有很多公司成立,亦有很多公司注销甚至破产。有人说“有限责任公司是人类在商业历史上最伟大的发明”[1],“有限责任公司”的出现降低了人才的创业风险,自然人仅以“有限责任”对逻辑以上存在的“公司”负责,即鼓励人才设立公司发展技术,又降低了公司失败带来的风险。可以说,在任何一个领域,理解了背后的逻辑,就更容易触碰这个领域的灵魂,“逻辑”意义上的认知是推动文明进步的重要力量,对于数据分析而言亦是如此。本书为传播Tableau技术为宗旨,方法就是探究和分享背后的逻辑意义上的设计和原理。如图4-33所示,借用类似的视角分析数据。以计算机的真实存储与可见性为基本判断,每个Excel工作表、文本文件、数据库中的每个数据表(table或称view)都是真实存在的,特别是数据库底表一旦创建几乎不会改变,此为“物理表”;而各种因视图需要临时创建的多表查询,甚至随着视图互动随时变化的查询,都是“逻辑表”。IT经常为满足分析需求而创建各种多表的SQL查询,结果就是一个逻辑表,有时候,一个逻辑表会反复使用,因此会保存下来,称之为“存储过程”(Stored Procedure),它介于物理表与逻辑表之间,但由于存储过程依然可以随着需要灵活调整,因此它本质上依然是逻辑表。

图4-33 物理与逻辑之示例
用这样的方式,就可以更好地理解之前的话:并集与连接的数据结果是物理表(Physical Table),而数据混合的结果是逻辑表。数据关系把之前分布在两个阶段的两种关系,在数据源阶段合二为一。
2.数据关系的物理层、逻辑层双层结构
数据关系如何把物理表和逻辑表合二为一呢?如图4-34所示,关系的对象可以是单一的数据表,也可以是基于并集和连接的多表合并,物理表间的关系构成逻辑层的数据匹配。

图4-34 数据关系是物理层与逻辑层的双层结构
物理层的数据关系称之为“物理关系”,逻辑层的数据关系称之为“逻辑关系”。不过,由于是在数据源阶段完成的,相对于混合的按需匹配的过度灵活,数据关系中的逻辑关系是相对稳定的,又无需像连接预先行级别合并,同时保证了性能。如果不好理解,再打个比方,说说情侣与夫妻。情侣关系是灵活的、不稳定的关系,因情生爱、乐极生悲,谁都不知道能否成为夫妻,这种关系有点像数据混合。喜结连理,成为夫妻,就变成了相对稳定的关系,这种关系通过法律予以认可,但依然是逻辑意义上的关系;柴米油盐、日久生怨,谁都不知道能否彼此终老。但是即便夫妻这种法律上的逻辑关系破裂,也不会打破基于血缘的“物理关系”,如图4-35所示。

图4-35 包含逻辑关系和物理关系的家庭关系模型
物理表永远都是物理表,物理关系永远都是物理关系。基于血缘关系,父子、父女、母子、母女关系自出生开始直系血亲不可更改,此为“物理关系”(Physical);而基于法律上的公证,养父与养子养女关系、夫妻关系,既可以基于法律建立,也可以基于法律原则而撤销,这样的关系是形式上的、法律上的关系,此为“逻辑”——我们遵守法律,实质上是认可法律背后的逻辑推理。可以把家庭视为是逻辑与物理的双层结构,Tableau的数据关系亦如此。数据关系中的逻辑关系,如同稳定家庭的夫妻关系,因为法律上的认可相对而言是长期稳定的;而混合建立的逻辑关系,如同情侣关系,基于单一视图而建立,灵活性非常差。用这样的思考理解数据关系的双层结构,就容易理解了。
3.并集、连接、关系和混合的宏观模型
结合物理层和逻辑层的引用,数据关系不仅仅是数据合并的全新方法,而是可以和并集、连接融为一体,从而构建整个数据分析的模型,即数据模型(Data Model)。Tableau官方提供了一个书店的数据模型示例,如图4-36所示,它由13个数据表构成,其中图书基本由两个数据表构成(Book表与Info表,通过BookID字段匹配而成),大部分数据表都与图书基本信息表关联,连接字段各不相同;销售由4个结构完全相同的各季度销售表(并集)。多个数据表的表层次差异很大,一个BookID会有很多次评价(Ratings),可能有多个版本(Edition),不同版本的书销售明细明细数据就更多。如果通过连接合并在一起,表层次高的数据就会出现大量重复,降低性能,分析容易出错。使用数据关系,可以实现一对多的匹配,整体结构如图4-37所示。

图4-36 书店数据的结构图

图4-37 包含数据并集、数据连接和数据关系的数据模型示例
“数据关系”相当于此前数据连接的位置,把数据混合的聚合匹配理念引入。这样,它就既具有数据混合的灵活性,保持数据表相互独立的同时,根据分析需要实现不同详细级别的数据合并,又具有数据连接的稳定特征,还可以发布之后反复使用。为了更好地表述多种数据合并方法的关系,以超市为例制作如图4-38所示的层次图。准确地说,数据模型,就是基于数据分析的需求而建立的各种物理表之间的相互关系,以逻辑的关系代替物理的连接。借助于数据关系,之前的数据连接面板就从单一的物理层,变成了逻辑层和物理层两层结构。

图4-38 包含并集、连接、关系与混合的示例图下面,结合案例介绍如何建立、使用数据模型。
[1] 参见《公司的历史》,作者:约翰·米可斯维特、亚德里安伍·尔德里奇。
如何分辨新版本(10月或者12月印刷版)?
——封底增加了出版社二维码(下载源文件)
by喜乐君
Dec 6, 2020欢迎读者勘误图书的错别字或者改正建议
图书读者群
以书会友·以友辅仁发布于 12-06
《【修订】Tableau 2020最最最重要的功能:从数据连接、数据混合走向数据关系》有2个想法