周末出差,给中国地质大学(武汉)MBA 上课,返程路上读书学习了DAX关键概念,如Filter Context、Measure、Calculated Columns、Lienage 等,知识体系虽然生涩,依然惊叹于背后的严谨、周密。
就在前几天,我在某群中看到有人散播《数据可视化分析(第一版)》PDF影印版,没想到第二版出版已经半年,还有很多人在传阅第一版。关键是,受限于当时我的认知水平,第一版本中有不少理论上的瑕疵,乃至错误。
鉴于 Tableau 的影响力和此书流传之广,我突然想,我早年的“错误理解”很可能已经影响到某些软件公司内部!我根据“文心一言”的指引,简单看了几篇帆软BI 的官方文档,果然应验了!
认真查看这些文档,会发现内容有浓重的“喜乐君影子”,既参考了书中高度概括的部分,也照搬了“我的认知盲区”。
为了帮助某些人认识到这个问题,也避免更多人受“盗版知识”毒害,本文特此摘要几个关键说明。
- 什么是维度、度量?
- 什么是聚合?
高铁上仓促写就,如有不周之处,请各位看官留言批评。
01—从“FineBI 词汇表”看“盗版知识”
先看帆软的官方文档“FineBI词汇表”(见文末参考链接1),罗列了过滤(filter)、字段(field)、维度(dimension)和指标(measure)等概念。虽然定义极其粗糙,还算基本正确,如下所示:
Tableau 和 PowerBI用户可以用“度量”“度量值”(measure)理解帆软BI的“指标”。当然,我个人排斥在 BI 中使用“指标”一词;“指标”是业务定义,对应 Metrics;它的范围小于分析定义的“度量”(measures)。如果加上“KPI”(关键绩效指标),它们的关系如下:
KPIs < Metrics < Measures
点击“FineBI词汇表”一文中的维度或指标,就会进入另一个页面“认识数据表”(文末参考链接2),你就会发现写文档的人基本就是BI 界的“半吊子”、文案界的“盗墓者”。
先看哪些知识很明显地“借鉴”了我的内容,就像功能“借鉴”Tableau 一样。
1)数据表的理解
这里有一段写的很好,“从业务角度看数据表的构成,数据表就是业务过程、业务对象的交织,其中行对应业务过程,字段对应业务对象”。读到这里,一种“似曾相识”感扑面而来😄
(图片截取自帆软官网,参见文末参考1)
虽然“业务对象、业务过程”不是我的“首创”(来自于《华为数据之道》,我在讲解中多次提及);但是,将它们和“关系型数据表”建立结构上的明确关系,并特别强调中文的“记录”和数据表“record”之间的对应,恐怕不会是其他人的杰作。
看下面我的讲义图片,是不是感觉就是“一个师父”。
2)问题结构
如果说我对分析有点贡献的话,我自以为是“问题结构”的理解。这是我迄今在任何一本书中都找不到的内容,因为它和维度、度量息息相关,而传统的 Excel、Report 甚至于大部分 BI 都没有这样的定义。这是建立在严谨的筛选、维度、度量三要素基础上的。
帆软也“模仿了”这方面的内容,不过模仿过程中出现了偏差。如下图所示,它把“筛选”误以为维度分类,并在高级问题面前失去了诠释能力。
(图片截取自帆软官网,参见文末参考2)
为什么会暴露如此明显的“盗版”风格呢?
因为概念和原理理解不够透彻!
在第一版本图书中,我特别强调“分析范围、分析视角和问题答案”的三分类(如下图问题颜色,橙色、蓝色、绿色),从而和 Tableau “筛选、维度、度量”建立关联;而在后来的 B 站视频中,为了兼容 PowerBI 的理解,我又增加了“聚合的条件、聚合”的二分类(如下图左右阴影,灰色和浅蓝),对应 PowerBI 中的“筛选上下文+度量值”。
帆软在学习这些内容时,可能是错误地以为“年度=2024”的筛选条件都属于维度分类(ps.我在早期也有这种认知错误,所以第一版未能明彻,多有”语焉不详“之处);或者可能是想学习 PowerBI 更加简洁的二分类(ps.但简洁的背后其实是更复杂的逻辑,只有从单元格角度,filter 才能和 dimension 具有等价性质)。
于是,“盗版知识”出现,贻笑大方而来。
这种认知错误根本的来源是维度、度量的概念认识偏差。
02—“盗版知识”重灾区:维度和度量
在“认识数据表”一文结尾点击维度和指标的转换,在维度和度量的错误理解就彻底暴露出来。
我先直击要害:“维度转化为指标” 和(字段) “转化为指标”是完全不同的两种表述,前一种是错误的!!
(图片截取自帆软官网,参见文末参考3)
我相信很多人看到这里是懵的,特别是深受帆软文档毒害的学生、分析师!“维度转换为度量”和(字段)“转换为度量”竟然不是一件事情???
幸好,FineBI 程序上严格模仿了 Tableau(如下图所示,左侧帆软、右侧 Tableau),如果程序中也说“维度转换为度量”,那我真想把产品经理拉出来痛骂三天。
至于为什么?
答案其实就在前面“数据表结构”和“维度和指标的概念”之中。错误根源在于误以为 “日期和文本类型的字段”就是“维度字段”。
只能说,帆软官方写文档的人能力层次不齐,有的人理解透彻一点,有点人理解肤浅一些;可能是“实习生”,或者大学成绩不过关。聪明的人知道直接“照搬”喜乐君的介绍,必要时做点魔改;愚钝的人以为概念有个屁用、FineBI 程序牛逼第一,照着程序写就好了。
当然,这里就不批评“度量转换为维度”之后,还需要“分组”的垃圾设计了。
03—聚合的“浅说”
维度和度量理解错误,“聚合”就不可能幸存。
在帆软官方“聚合的概念”一文(文末参考链接4),模仿我第二版的结构从 Excel 透视表、SQL语句,讲到 FineBI,并且尝试介绍两个关键:
- 聚合计算和明细计算的区别
- 直接聚合及聚合的延伸计算
看过我的第一版和第二版图书的读者,一定对帆软的介绍有“似曾相识”之感。可惜帆软文档“写手们”只领会了皮毛,未能“登堂入室”,所以文章更像是观点的罗列,没有灵魂、不得要领。
首先,理解指标(度量)的关键恰恰是这里的聚合(aggregation)。聚合是分析的本质,既然要学(mo)习(fang),这句话千万不能遗忘。
其次,聚合依赖于问题,依赖于问题的详细级别(帆软称之为粒度)。“聚合的概念”中只字不提,后面的“数据的粒度”也完全不明就里。
再者,既然聚合是一个过程,两类计算就对应两个最重要的粒度。所以比较聚合计算和行级别计算(帆软:明细级别)就至关重要。
非常惋惜的是,帆软官网文章举了一个非常不恰当的例子,揭露了“写手们”的“盗版知识”之浅薄。
如下图所示,姑且不说左侧的明细示例其实非常不准确(明细数据不会有销售额字段,只有中间表才会出现),单说右侧的两个分支:“明细计算”和“聚合计算”的差异体现在计算逻辑上,也要在业务上有意义。
(来自帆软官网,见参考4)
两类计算的正确解释,必须体现出是否包含聚合,这是要害!
//明细计算
(销售额)/ (销售数量)
//聚合计算
sum_agg(销售额) / sum_agg(销售数量)
当然,即便如此,这里的案例依然有瑕疵。“明细计算”其实是在原来明细表中新增一列(类似于 PowerBI 的“计算列”),而非像聚合计算在新的逻辑表中完成,所以上面的图示更像是误导。
同时,“销售额”本来就不应该出现在明细表中,这个案例最好的方式是用“明细表中的单价和数量”计算“销售额”。就像 PowerBI 中的案例:
MEASURE Sales[Sales Amount] =
SUMX ( Sales, Sales[Quantity] * Sales[Net Price] )
文章后面“直接聚合和聚合的计算”的蹩脚描述,这里略过不提了。
至此,读者应该可以感受到,一个本来就不够精益的软件,如果搭配漏洞百出的“官方帮助”,简直就是行业的“敌人”了。你可以从官方文档后面的用户留言一窥真相,这里可比知乎上“帆软天下第一”的爽文真实多了。
04—喜乐君,你造谣!
和之前的两篇文章一样,都骂到帆软脑门上了,我相信很多人还会嘴硬。
“喜乐君,你造谣!”
“你对帆软根本不懂!”
如果有人想和我技术对峙,我也好不逃避。其实我随意看几篇,还能找到很多“蹩脚参考”的例子。比如:
- 使用了“直接聚合“的概念,但是却没有与之对应的“预先聚合”“二次聚合”等概念,这样“直接聚合及其聚合计算”就显得很“盗版”
- 在指标分类中,“规模”和“比率”是相对而存在的,但其实不适合用来介绍函数分类,因为“规模”这个是业务视角。帆软官方帮助中竟然把函数分为规模类、以个体描述总体、离散程度(参见文末参考链接4)。还把Max视为“以个体描述总体”,而把 Percentile 视为“离散程度”,这就非常可笑——殊不知前者是后者的特殊形式而已。
当然,优秀的地方有我的“功劳”,错误的地方也是。
我在《数据可视化分析》(第一版)中,由于自己的认知错误出现了一些错误描述,特别是维度、度量和字段类型的描述多有瑕疵,如下图所示:
在《业务可视化分析》第二次印刷(大约2022年年初)时,我发现了这个问题,并在加印时集中修改。
后来为了彻底解决早年理解上的瑕疵,确保整个体系的严谨,我在2022年完全重写了《数据可视化分析》一书并在2023年9月发布,就有了如下的更加清晰的说明图:
假设帆软的写手们认真思考、认真阅读,就能发现“我的成长”和过错,并能更好的应用到自己的软件文档中。
很明显,帆软的官方文档是一群“乌合之众”一样的写手们分工协作的“蹩脚的参考”。一个本来就不够精益的软件,配上漏洞百出、恬不知耻的“官方帮助”,如果我说帆软是中国数据分析行业的“公敌”,恐怕并非言过其实吧。
参考:
1-FineBI词汇表
https://help.fanruan.com/finebi/doc-view-829.html
2-认识数据表
https://help.fanruan.com/finebi/doc-view-2347.html#
3-维度转换为指标
https://help.fanruan.com/finebi/doc-view-109.html
4-函数分类
https://help.fanruan.com/finebi/doc-view-4.html
@喜乐君 咨询顾问|上海唯知唯识创始人
业务分析师、数据咨询顾问
Tableau Visionary 2021~2024
《数据可视化分析:Tableau原理与实践》2020.8
《业务可视化分析:从问题到图形的Tableau方法》2021.7
《数据可视化分析:分析原理与Tableau、SQL实践》2023.9
………… MORE ………