11
2023-07
Power query和超级表有什么区别和联系
因为最近有人问到我这个问题,作为一个考据党,我去考据了一下……结果还挺意外的……
LEARN MORE

图片由海艺AI绘制

故事的起因

一切的起点是……
有人问我Power Query和超级表到底有啥区别。
说实话我没相关这个问题。甚至对于超级表这个概念并不是很清晰,唯一的概念是我在短视频上看到过,当时的感觉就是“这不就是Power query中最简单的功能么?这都啥破教程。”
有人问我之后,我就突发奇想去调查一下,于是就发现,这事情还是有点意思的。

深入挖一下概念

首先,在被无数教程文档坑过之后,我选择于是不决官方文档。毕竟微软官方文档写得还是不错的,再加上Excel这么通用的文档,肯定是有很详细的说明的。于是我就去Excel的官方文档瞅了一眼:

(这里把excel官方文档的地址也放出来,不知道的小伙伴可以收藏一下,不过大家有能力的话还是看英文的文档,中文文档有的时候翻译得比较垃圾,一言难尽,https://support.microsoft.com/zh-cn/excel)
该说是意料之中还是意料之外呢,Excel官方压根就没有超级表这个概念!感觉这个名词就是一些自媒体造出来的词,毕竟官方对于这个用法的说明就是结构化引用。

如果去翻文档的目录的话,就会发现,网红的“ctrl+t超级表”这个用法对应的文档是表格的概述……


从官方文档的文档逻辑来看,是这样的:
Excel内置了一些表格样式,当我们使用ctrl+t,是套用了内置的默认样式,也就是第一行是标题行的样式。我们可以对一个带有标题行的数据做计算列的操作:

官方对这个功能解释非常简单,就是省去复制和填充的麻烦~

和计算列并列的一个概念叫做结构化引用,说白了就是不用A\B\C\D这种列号,直接使用列标题的名字来作为引用,这样就不用担心表格多加了一列公式会不会裂开(我打赌每一个新手数据分析师都多少经历过公式裂开的悲伤故事)的问题。

从官方文档的结构和逻辑就可以看出,官方对这个功能的介绍是:套用了内置的格式(首行是标题这个格式)之后,写函数的时候就可以用结构化引用的方法以提升效率。说到底,就是对Excel本身公式用法的一个升级。
而power query在Excel中的定位则和超级表有很大的区别——power query占据了足足一页的版面。这个版面叫做数据的导入,很简单,就是字面的意思,把Excel外部的数据导入Excel中。

虽然我们一般情况下都觉得power query在Excel中的出场频率比power bi中要低很多。但其实吧,power bi曾经也和power query一样,是excel的一部分,只不过那个时代,tableau正当红呢,power bi还不成什么气候。硬要说的话power bi曾经就是Excel的一部分,而365版本的excel也支持一些之前只能在power bi中实现的功能了。
在我看来,从性质上来说,power query其实更接近ETL工具。大家不要把ETL想当然地把ETL和大数据数仓联系在一起,ETL描述的是一个数据处理的过程,而不是特定的某几个工具。
如果你有仔细看过ETL的定义,就会知道,ETL全称 Extract-Transform-Load,它是将大量的原始数据经过提取(extract)、转换(transform)、加载(load)到目标存储数据仓库的过程。
power query实际实现的功能就是提取不在excel表中的外部数据(对当前excel表来说,其他的excel表的数据也算是外部数据,这个不难理解吧),经过一系列加工操作,把数据加载到当前的excel表中。数据处理和分析过程中的很多问题都是随着数据量的不断变大而变化的。早期BI工具和ETL工具其实并没有非常严格的区分,可以理解为power query就是power bi和excel自带的ETL工具。
区别讲完了,接下来说一下联系吧。
我之前觉得pq和超级表是一个东西的主要原因在于:首先,power query导入的数据,默认启用了表格样式,处理的时候默认是结构化引用。其次,表格结构化引用的公式写法和dax及M语言对比来看,不能说一毛一样只能说会了dax和M语言,结构化引用就是看一眼就知道这是怎么用的。因此我会下意识地会觉得power query和网红用法超级表是一个东西。
除此之外,还有一个原因,和我接触power query的契机有关系。当时是为了处理数据量过大电脑卡顿的问题接触了power query,表格做结构化引用也是一样可以解决数据量过大的问题。并且两者解决大量数据容易卡死的问题的原理是一致的——OLAP。非要说的话,可以把非结构引用状态下的Excel表当作OLTP型数据库,结构化引用状态下的Excel表当作OLAP型数据库。这里卖个小关子,下周来讲OLTP和OLAP的区别。

一个冷知识

Excel表中处理一个10W行左右的表格,容易觉得卡顿主要是因为,在非结构化引用的模式下,Excel会把每一个单元格都作为独立的计算单位进行计算,这种情况下,卡不卡其实取决于电脑CPU+内存,如果你在卡死的时候看一言,就会发现CPU飙满了。而采用了结构化引用的表格,卡不卡CPU就不管了,GPU会出手。对GPU而言,十万数据根本不在话下。
所以说,不是Excel的大数据量性能优化做得不好,是你不会用。
然而有一个悲伤的消息,对于办公笔记本电脑来说,GPU会不会出手救你取决于是不是独立显卡。显卡性能好不好其实不太挑,随便一个垃圾的独立显卡就能挽救你Excel 卡死的问题,但一定要是独立显卡。根据我的测试,集成显卡的电脑哪怕启用了query和超级表,还是CPU在努力工作,GPU纹丝不动。
对此只能说,只有自己和自己比较才是有意义的。对于集成显卡的笔记本电脑而言,用超级表和query一定比公式硬算的效率高。但是和独立显卡的笔记本电脑比起来那可真的是完全不够看的。