说明:本文是《数据可视化分析(第 2 版):分析原理与 Tableau、SQL 实践》第三次印刷(202407)的新增章节,用来替换之前的4.4.6小节。因此可作为本书的勘误记录之一。
4.4.6 共享维度和“多事实关系模型”(2024.2+版本适用)
Tableau 2024.2版本推出了研发多年的“Shared Dimensions”功能,可以构建强大的、支持多事实分析的关系模型。这种强大模型称之为“多事实关系数据模型”(Multi-fact Relationship Data Model)
在IT的知识体系中,事实表和维度表是数据仓库和数据建模中的关键概念。
事实表(Fact Table)是对运营过程的度量记录(这里是 measurement,而非 measures),比如销售额、数量等,主要记录How Much的部分;维度表(Dimension Table)则提供运营过程相关的时间、地点、人、物、方式等综合背景信息(Dimensions provide the ‘who, what, where, why, and how’ context surrounding a business process event),维度表也被称为数据仓库的“灵魂”。
1.“多事实关系模型”的配置与注意事项
以生产制造的场景为例, 生产工单(ManufacturingOrder)对应工单结构(Node)(一对多关系,且工单必然匹配);工具结构既是工序(Operation)的依据,也是生产投料(Material)和生产报告(Reporting)的依据。如图4-54所示,“工单结构表”(ManufacturingOrderNode)作为共享维度表关联了上下主题。

图4-54 使用“共享维度”功能将多个事实主题放在一个数据源中
之前的 Tableau 关系模型,也支持有限度、场景相近的“多事实分析”,比如“销售明细与销售目标主题模型”可以理解为两个场景、一类事实。基于“共享维度表”,关系模型可以把关系较远的两类事实,整合在一个数据源中,从而提高了数据模型的抽象程度、减少了数据表碎片化。
在上面的示例中,生产投料是以生产物料的 BOM 为依据、一次性投料到生产结构的,因此上方的数据主题是“生产结构”(Node);而工单工序、工单报告,则都是基于工单结构所生产物料的工艺结构的(比如过滤器先折纸、后注胶),因此下方的数据主题是“生产工序”(operation)。“生产结构”和“生产工序”具有层次关系,并构成更大的生产主题,所以可以作为一个数据模型。
当然,生产流程很长的制造业务中(比如飞机),生产投料是严格按照工艺路线对应到生产工序的,这种情况下,投料、工序、报告就彼此对应,关系模型也和此处明显不同。
在 Tableau Desktop 中,两个业务事实用两个“基表”(base table)来表示,因此构建“多事实关系模型”的关键是如何加入第二个“基表”。如下图5-55所示,新模式之下,从数据库中拖入数据表会有个选项:和已有数据表构建关系、独立于已有数据表或关系“新建基表”。

图4-55 在 Tableau Desktop 中拖入新表有两种选项
需要注意的是,“多事实关系模型”可以视为比“单事实关系模型”更加抽象,但依然要遵守关系模型的规范:在最详细且有业务意义的级别构建多表关系。关系模型必须作为一个逻辑实体(logical entity)出现,如果上下两个基表(包含它们的关系表)相互之间没有关联(官方使用了relatedness,而非relationship关系),那么数据源是不完整的、不能保存和发布的,如图4-56所示。

图4-56 多个基表之间不相关,不能作为完整的关系模型
以基表为基准,多事实关系模型可以区分为多个相互独立、又彼此关联的部分,每个部分犹如一颗“树”(tree),通过“基表”(base table)彼此关联(这里官方使用了related一词)。多事实关系模型可以“多棵树”并存,因此出现了“不关联”和“共享关联”的新类型。
如图5-57所示,一个完整的多事实关系模型中,两个表可以是关联的(直接或者通过中间表),或者是不关联的(典型如两个基表之间)。同时,“共享维度表”是同时关联多个表的“共享表”。
- Related tables (彼此关联的表)
- Unrelated tables (必须不关联的表)
- Shared tables(共享表,同时与多个关联)

图4-57 多事实关系模型中,表之间的关联和特征
为了更清晰地理解“多事实关系模型”,读者可以回顾一下4.4.2小结中家庭关系的比拟。如图4-58所示。混合如同“灵活的恋爱”,关系如同“稳定的婚姻”,“多事实关系模型”就像“多个家庭相互关联构成的家族关联”,其中每个人都可能在多个家庭中承担多个角色,如每一位“母亲”都是另一个家庭的“女儿”,她们是多个家庭的“纽带”,如同多事实关系模型中的“共享表”(shared tables)。

图4-58 包含逻辑关系和物理关系的家庭关系模型
从这个角度,读者可以进一步理解,“多事实关系模型”就是传统关系模型在范围上的延伸,甚至可以理解为“物理层——逻辑层”双层结构到“物理层——低阶逻辑层——高阶逻辑层”三层结构。
2.基于“多事实关系模型”创建可视化
在使用多事实关系模型分析问题时,要谨慎同时使用多个基表的度量,如果不能深刻了解背后的逻辑,可能会出现难以解释的数据结果。这一点,和数据混合的灵活性多有相似。
如图4-59所示,当以第一个基表的字段构建视图时,和它“不关联”的数据表会默认显示为灰色。如果要加入“不关联”数据表的度量值,默认相当于最高聚合度的指标。

图4-59 可视化分析过中,数据模型与字段使用方面的限制
虽然“多事实关系模型”是 Tableau 关系模型的进一步升级,在多事实分析、共享维度方面有实质进步。但是,笔者依然推荐优先使用简化的关系模型,或者使用数据混合完成跨主题分析。相比“多事实关系模型”的抽象性,之前的关系模型和混合更容易理解。
当前中国的 BI 市场,普遍严重依赖预聚合的“宽表”或者“数据仓库视图(View)”,目前还没有任何一家国产 BI 支持完整的关系模型和混合模型,用户实际应用场景的差距就更大。相比“多事实关系模型”,企业用户、个人用户都值得在关系模型、混合方面增加投入。
喜乐君 Jul 5, 2024
Pingback: 《数据可视化分析》(第2版)勘误表-Tableau喜乐君-敏捷BI布道师
评论已关闭。