跳至正文

【致敬Tableau20周年】分析工具篇SQL、DAX、VizQL(下)

编者按:致敬Tableau,致敬Tableau20周年,它改变了我们的数据查询习惯。

在上一篇文章( 数据分析,绕不过SQL、DAX、VizQL(上)),喜乐君介绍了SQL和DAX各自的设计初衷,及其在数据表、函数方面的差别,有助于形成“SQL垄断数据库交互,DAX专攻抽象分析”的基本认识。

在此基础上,我们也要认识到,“年轻派”DAX虽然大有可为但入门难度颇高,即便IT用户也敬畏三分,更非业务用户所能驾驭;“中年大叔“SQL虽然垄断了数据库层面的增删改查的硬交互,但并非生而为分析,所以高级问题分析也会力不从心。

那有没有一种可能性,既能像SQL一样简单易用、灵活多变,但用函数简化编程逻辑,又能像DAX一样适用于数据模型,同时善于各类聚合及其组合,但不要那么复杂?

成年人的世界就是:不做选择,全部都要!那些最聪慧的产品经理和工程师给了我们最佳选项,甚至打造了神级产品。

三、VizQL:把交互与查询合二为一

如果是SQL是面向关系数据库的结构化查询语言,那么VizQL就是“可视化查询语言”,它是Visual Query Language的缩写,看得出来,它基于SQL做了可视化的改造。

VizQL™️来自于斯坦福大学的Polaris北极星科研项目(科研团队为此申请了专利),它在SQL的基础上,创造性地增加了人机交互的元素,从而使得之前生涩的编程查询变成了优雅的拖拽动作。我们可以用如下的图示理解这种革命性的变化:

自从有了VizQL的交互式查询引擎,任何人都可以拖拽数据表、数据表字段完成数据查询和分析整理工作,从最简单的SELECT * FROM table,到进阶的字段格式调整、字段重命名、字段分组、分组聚合,再到更高级的“嵌套聚合查询”(nested query)、WINDOW窗口函数,Tableau都设计了极简的交互设计实现思路。

借助于这些特征,基于VizQL的Tableau帮助越来越多的“数据劳工”(data workers)变成了“数据思考者“(data thinkers),换句话说,我们无需拼命催着“工具人”去实现什么,而是让工具赶得上我们思考的速度。

这也是基于这种创造性、史无前例的设计,Tableau以短短十几年的时间成长为世界级最佳敏捷BI工具,并在2019年以超高溢价被CRM巨头Salesforce收入囊中。今年是Tableau成立20周年,二十年后的今天,Tableau依然是一众BI工具争相模仿、超越的对象。

如今很多分析师在大学期间就熟悉各种交互式BI,他们反而很难体会当年这种革命性交互方式带给人们的震撼,如同现在的00后无法感受乔布斯首发Iphone全触控交互时人们的狂热。但历史已经证明,不管是交互式查询,还是移动设备触屏,都已经改变了人类与数据、手机打交道的方式,是革命性的颠覆。Tableau创始人之一Pat教授还在2019年荣获“图灵奖”,在可视化领域的地位应该可以比肩乔帮主之于智能手机。

当然,如同我们不能同时使用11根手指触摸屏幕,分析师也无法使用VizQL完成非常复杂的查询分析,它在简化了交互的同时,也无法替代SQL、DAX此类编程或函数语言的价值——“年轻派”的DAX也借鉴了VizQL的灵感,从而与Power BI、Ssas等前端工具相互融合,成为微软大数据分析平台交互背后的基石,平时隐秘其中,关键时刻独当一面。

同时,国内外众多的BI工具,也间接了VizQL的交互式思路,拖拽分析逐渐成为BI工具的主流交互方式,只是,很少有工具真正理解并超越了VizQL的精髓,这与它背后的字段逻辑分类、可视化路径有明显的关系。

四、VizQL相比SQL和DAX的进步之处

为了更好地理解VizQL的特征,这里借助于案例详细说明它的颠覆性特征。

1、交互查询:颠覆性的易用特征

我们先来看这个例子,假设领导让你从数据库中查询“2022年,不同区域的销售额与利润率”,你会自然地把这个需求转换为一段查询的代码,交给数据库管理系统执行并返回结果。如下所示:

在这个过程中,“码农”的作用就是把领导的需求转化为计算机可以识别的语言,我们要告诉计算机,领导说的“桌子”是category字段下的一个值,而2023年是订单日期而非结算日期。这个最简单的问题,需要转换为如下的单词组合:

SELECT [region] , 
 SUM(sales) as total_sales,
 SUM(profit)/SUM(sales) as profit_ratio 
FROM superstore_deal
WHERE YEAR([order_date]) = 2022 

现实中,我们几乎没有如此简单的查询语句。而且“转换”这件事情一点也不酷,左侧是多变的、容易发怒的领导,右侧是无情的、说一不二的机器。既要懂得领导的心,还要明白计算机世界的规则,两边都不能得罪。如果你看过企业中动辄几千上万行的SQL查询,你就能感受到数据仓库团队的辛苦、那种不被领导认可的辛苦和无奈。

有了交互式查询技术之后,你终于可以快速完成了,甚至可以以“自助分析有益身心健康(业务成长)”之名,让业务用户享受数据查询的快乐。此时的过程变成了如下样子:

Wow……拖拖拽拽进去,炫酷图形如来,如此优雅、好玩。业务用户瞬间有了自己是数据“主人翁”的成就感。那些在SQL中必备的逻辑,此时都会对应不同的UI位置,字段拖入之后,自动更新对应的SQL片段:

  • 拖入筛选区域:生成WHERE或者HAVING筛选查询
  • 拖入维度字段到行、列、详细级别:自动生成GROUP BY
  • 拖入字段并设置聚合方式:自动添加聚合函数,比如SUM、AVG、MAX等
  • 点击排序,或者手动设置排序字段:自动更新SORT BY部分

可见,Viz QL可视化交互的首要好处,是让数据查询变得简单,其次才是让数据呈现变得生动、平易近人、靠近现实。

2、增量建构:敏捷分析帮助用户专注问题思考

从分析辅助业务决策的角度看,交互式查询和敏捷可视化分析的最大价值,不是让查询更快、更准、更高效,而是让业务用户获得解脱,聚焦于问题,并能持续提问、反复求证,最终通往高效的业务决策。我们不再是等待浮于形式化Reports的保守派,而是让数据分析成为决策左膀右臂的探索家。

还是前面的例子,假设领导在看了“2022年,不同区域的销售额与利润率”之后,他提出了一连串的问题:

  • 随时切换年度筛选器,比如选择2023年,获得2023年迄今,各区域的销售额和利润率
  • 能否增加客户数量和单客户贡献,从而评估不同区域是“规模驱动市场”,还是“价值客户驱动市场”
  • 在每个区域中,按照利润金额划分5K+大单、1K+中单、小单和亏损单四类,对比不同区域之间的交易结构
  • ……(领导:等等,让我看到上面的结果会,我再想想)

此时,难点甚至不再是查询本身,而是多个问题之间的关系——后一个问题总是在前一个问题基础上步步递进,这种“增量建构”(Incremental Construction)是考验敏捷分析工具的关键点。

在之前简单的条形图基础上,分析师既可以分别在单一个可视化中呈现足够丰富的分析视角(即多维分析),也可以把多个单一维度的问题借助于仪表板、交互的方式组合。Tableau特别擅长第一种高级场景,而Others BI多半走向第二种方式。

在喜乐君刚刚发布的《Tableau在零售分析中的高级应用——2周年纪念版》视频中,喜乐君再次讲解了特别重要的案例:基于子类别的结构化分析。在如下的一个条形图中,喜乐君增加了子类别、交易分类、订单分类、客户分类的四个问题视角。这种多维分析的方法,是业务探索中至关重要的场景,是Incremental Construction的典型场景。

3、VizQL交互查询的新升级:将易用性持续到底

VizQL是Tableau超级易用性的本源,很多人以为拖拽仅仅适用于可视化过程和简单数据合并,比如拖拽字段生成select -from-where-group by-having-order by查询;其实,随着技术的快速发展,高级交互技术已经全面蔓延到每一个关键环节。这里概括几个关键:

  • 窗口函数(window calculation):SQL中只有绝对指定字段(partition by和order by),可视化中可以相对指定(横穿、向下;表、区、单元格),这个逻辑目前在很多BI同行中都没有做好
  • 嵌套查询(nested query):LOD就是包含聚合条件的嵌套查询的函数形式,2021年的quick LOD让拖拽生成LOD成为可能。LOD功能发布七八年以来,至今依然没有对手可以望其项背,很多国产BI的魔改在我看来走火入魔
  • 数据表合并(join/union):简单拖拽构建join、union合并;新版本的拖拽有了逻辑层、物理层的区别,逻辑架构兴起
  • 交互动作(action):随着参数动作、集动作、动态对象可见性等多项功能先后引入,高级交互也开始交互化

接下来,本文重点介绍数据关系模型和LOD表达式,帮助大家理解易用性背后技术的深刻特征。

1)将VizQL置于数据关系模型之上

前面文章中讲到,SQL默认是以单个数据表为查询起点的,多表关系需要依赖于JOIN并明确指定关联条件(on join-condition);相比之下,DAX则是预先构建关系,查询时仅需要指定表名称和字段名称即可,比如RELATED(sales[Product]),在DAX查询分析背后,是称之为“表模型”的预先构建。

早期VizQL像SQL,只能基于单一的物理大宽表完成查询(这里先不考虑混合blend临时场景),在2020.2版本中,Tableau增加了“Relational Model关系模型”,从而走向了DAX的多表模型过程。可以用如下的图片理解这个过程:

可惜的是,在这个功能发布三周年之际,(按照喜乐君的项目经验)真正理解并驾驭了这个功能的Tableau用户恐怕还是屈指可数,究其原因,所见即所得的物理表魔力过于真实,阻碍了人们理解抽象的数据层次。如同“风花雪月”的人世间过于美好,阻碍了我们真正理解并接纳佛陀宣扬的解脱世界。

喜乐君在B站发布了详细介绍的视频,欢迎观看;另外原原厂张腾老师也有一个更技术的介绍。

在没有关系模型之前,拖拽即可创建Join和Union的物理表合并;有了关系模型,拖拽可以创建多个字段之间的逻辑关系,从而为视图结果完成跨数据表的合并提前做好准备。

当然,当前Tableau的实例并没有让人理解两层架构的魅力,近期喜乐君也在和厂家联系,希望把desktop的超市关系模型修改为如下的上下两层的关系模型:

2)为强大的LOD表达式增加拖拽操作

在SQL中,如果要完成“筛选销售数量总和大于100的大产品,查看各个客户的销售数量总和”,查询中需要两次使用GROUP BY分组聚合,分别完成“产品的数量总和”与“客户的数量总和”。

这里的难点在于,每个人都能在简单培训后快速构建简单的SELECT查询,但是如何降低聚合子查询的编写难度,才能决定工具的未来!天才般的Tableau产品经理,最终为Viz QL技术增加了浓重的一笔——用一组简单函数帮助大家完成嵌套聚合计算。

如下所示的SQL查询中,子查询的分组依据是产品名称(product name),聚合的对象是数量(sum(quantity)),那么就可以转换为一个函数,让用户指定分组依据和聚合字段,然后vizQL把它在后台转化为聚合子查询,同时用分组字段和原来的数据表构建数据关系模型。

在2021.1版本中,Tableau又增加了Quick LOD的新功能,旨在进一步降低业务用户创建LOD的难度——只需要按住Ctrl/Command拖拽度量字段到维度上,就能创建FIXED LOD表达式!Cannot simpler!

考虑到quick LOD不是必备选项,而且仅能完成简单的LOD表达式,所以从LOD表达式到SQL聚合计算的过程,可以表示为如下的第1、第2步。

每次想到这个地方,我就觉得Tableau的产品经理是天才般的存在,他们既能深谙底层的数据查询技术,又能充分地收集、整理业务的高频需求,然后把这些高频需求转换为交互动作——这个过程,岂不是软件开发的核心本质。

反观很多七天BI工具,DAX走向了深刻,Power BI没有为业务用户的高级探索提供真正的便利性;国产BI则更多浮于表面,在形式主义的大屏、复杂报表上沾沾自喜,或者就全凭自己的理解糅合不同工具的特征,最终出来一个难堪大任的功能。本身还是对国际同行的经典功能缺乏深刻的业务理解,这一环节,国内BI工具厂家还有很长的路要走,要么用金钱换时间,要么用时间换金钱,不可能短期内补上西方几十年的路。

“通常,客户不是不知道需求,而是缺乏归纳、整理,并转化为开发需求和设计语言。“

喜乐君

五、Viz QL的不足之处及其演进方向:BI+ AI

在“吹嘘”了VizQL之后,我们也要冷静地认识到它的不足,以及当前面临的全新的技术风险。

1)

首先,VizQL是人机交互和数据库查询的融合技术,它受限于人机交互的技术边界,所以无法完成复杂的操作。

迄今为止,计算机交互的经典要素依然是:窗口(容器)、图标(可视化指示)、菜单(二级菜单,内容更加紧凑)、指针(鼠标连接人机),也就是WIMP界面。在这种框架下,交互的复杂性取决于它们的线性组合。虽然相比DOS的”命令行“已经友好了太多太多,但也难以胜任非常复杂的交互能力。以至于IT依然觉得“命令行”才是“真IT”和“假IT”的重要标志之一。

举个例子,虽然Tableau2021.1版本增加了Quick LOD,但是喜乐君对比并不乐观。对于那些不理解LOD原理(嵌套查询+关系模型)的用户而言,再简单的拖拽也是真正应用上的障碍;对于真正理解了LOD的而言,quick LOD应用范围太窄,难堪大用(无法指定多个维度,无法拖拽SUM(销售额)到维度创建,无法生成include/exclude等)。

其次,随着拖拽工作量越来越多,VizQL变成了新的开发工具

Viz QL的初衷是简化开发、业务探索,随着它的魅力被释放,越来越多的Report、Dashboard开始转向敏捷开发,原来IT需要一周完成的开发任务被压缩到了2天,同时开发任务迅速增加。VizQL所期待的探索,依然被大量的传统开发所限制。

同时,正如人机交互的限制性,一个不能深刻理解业务逻辑的用户,无法如何是无法理解探索分析的重要性和应用场景的。

最后,Viz QL面临的最大挑战是AI。虽然交互已经在考虑AI的要素,但最终难免会被AI所“反噬”。未来的界面会不会简化到如同ChatGPT的问答?很难说

2) BI+AI,还是AI+BI?

从2018年开始,Tableau陆续增加了很多AI方向的功能,真正打造了BI+AI的技术方向,这里列举主要的要点如下:

  • 2018年ASK data,自然语言开始成为交互的一部分,拖拽的前面增加了一个更漂亮的“外壳”。这个技术的限制性比VizQL更多,所以注定只是“锦上添花”,很难平衡它损失的算力并它带来的收益之间谁多谁少。
  • 2019年Explain Data,数据解释引入了贝叶斯统计的多种模型,借助于算法为业务用户提供可能性的诠释指南。
  • 2020年Einstein Discovery,增加了Salesforce的预测模型,爱因斯坦可以提供更准确的预测和建议,每天超过900亿的预测数量让它站稳脚跟。甚至可以说,这个是通往大模型的道路,只是谁都不知道大模型会不会把一切推翻重来。
  • 2022年Data Story(仅限英文),数据故事帮助分析师整理仪表板的见解,并提供相关性的线索。听上去,像不像当红的ChatGTP的功能?只是,Tableau的Data story似乎没有我们想象的聪明(还不能支持英语之外的语言)。

 Tableau Data Stories automatically generates narrative insights within your dashboard, saving time and surfacing relevant insights. As you explore the vizzes in your dashboard, the stories written by Data Stories adjust, allowing you to dive deeper into data and identify key insights faster.

Tableau
  • 2022年Data Guide 数据指南,这个功能类似于之前的集大成:explain data中的异常值、data lineage数据世系关系等。

可见,Viz QL最大的机遇在于AI,最大的挑战也在AI。过去,Tableau一直在BI中增加AI的基因,每年都会增加相应的功能模块,这让它在世界BI领域一直处于领先位置。但是反过来看,AI的赋能无法解决VizQL交互的限制性,它无法让问题变得复杂。似乎,我们只能等待全新的技术,比如ChatGTP。

随着ChatGTP以颠覆性的姿态出现,一切似乎都可以从头再来。

2)

如果说之前都是BI+AI,AI是以辅助性的角色出现,如今,似乎到了AI+BI的时刻——Tableau将AI原生地引入用户体验,以可信和安全的方式更好地理解数据并与之交互。

Tableau Pulse是一种重新构想的Tableau用户体验,可自动执行数据分析。 在Tableau GPT的支持下,用户可以根据个人偏好预测每个用户需要的数据,并自动生成可操作的见解。 Tableau Pulse在Tableau GPT的支持下,与Data Cloud一起为客户提供了新一代分析体验,使用户能够根据相关数据更快地做出决策,将数据和分析的力量带给每个人。

——Tableau总裁兼首席执行官

当然,这个新技术是否会“昙花一现”(这个一现可能是一年),还是会深刻地影响工具的应用方式,还需要拭目以待。

当下之急,是我们绝大多数的业务用户,还没有充分的享受到Viz QL带来的福利。在子弹飞的过程中,不妨让我们重温Tableau的口号,并感受Tableau的美好:

We help People to see and understand data

@喜乐君

Jun 15, 2023


了解 喜乐君 的更多信息

订阅后即可通过电子邮件收到最新文章。

《【致敬Tableau20周年】分析工具篇SQL、DAX、VizQL(下)》有2个想法

  1. Pingback: 数据分析,绕不过SQL、DAX、VizQL(上) - 喜乐君

  2. Pingback: 大数据太慢?Tableau Server优化性能方法一览 – 喜乐君

评论已关闭。

了解 喜乐君 的更多信息

立即订阅以继续阅读并访问完整档案。

Continue reading