多维分析主要面向业务用户提供数据查询分析服务,由于业务人员不懂 SQL,也无法完成多表关联(有意义的查询经常是基于多表的),所以在多维分析建模阶段需要将多表转换成单表,也就是 CUBE。这样用户就可以很方便地通过基于一个结果集(CUBE)进行拖拽查询,从不同的角度(维度)观察数据(测度)。
在多维分析中主要的计算就是按照某一个或一些维度汇总测度,如按地区汇总销售额,按年和产品汇总销量等。从运算角度来看,多维分析的本质计算就是:
基于一个表的分组汇总
如果用 SQL 来表达,多维分析的本质就是:
SELECT D,…, SUM(M), … FROM C WHERE D’=d’ AND … GROUP BY D,…
即对数据立方体按某些维度分组汇总某些测度。其中 C 是数据立方体,D,…是选出维度,M,…是聚合测度,聚合函数也可以不是 SUM。D’是切片维度,切块时条件为 D IN (d,…),WHERE 中还可以增加针对某些测度的条件,一般也就是选出某个区间内的值。
针对一个结果集(CUBE),多维分析可以进行切片 / 切块、旋转、钻取 / 上卷等操作。
1. 切片
切片是指针对 CUBE,选择维中固定值进行分析,比如固定时间维度分析地区和产品的销量情况。
2. 旋转
旋转也称行列变换,是指维度从行到列或者从列到行,旋转是为了满足用户观察数据的不同习惯。
3. 钻取
钻取是从粗粒度到细粒度观察数据的过程,比如我们发现某个汇总值出现异常,就可以通过钻取查看明细数据,找到异常原因。钻取可以从汇总到明细,从上级到下级…
从多维分析的本质及其操作来看,多维分析只能完成简单的分组汇总、过滤计算,这在实际业务中还远远不够。常见的固定报表业务,一些报表很难通过简单的分组聚合来实现,经常要编写上千行的 SQL 或存储过程,而且固定报表的表格样式可能很复杂,这些都是多维分析无法实现的。
这种报表数据处理逻辑复杂,每个格子可能对应不同的数据来源,计算逻辑也不一样,在样式方面则会出现表头混乱,大格套小格,动态区域和静态区域混合的情况。
这里列举了复杂报表的特点: 这些类型的报表都无法通过多维分析拖拽出来。
事实上,固定报表和自助报表(多维分析)面向的需求场景很不一样,而在 BI 系统中往往会包含三部分内容,固定报表、多维分析和可视化,其中可视化可以由前两部分实现,但固定报表和多维分析往往是不可或缺的,二者相互配合,优势互补。认清了多维分析的能量圈,才能在 BI 系统建设中有的放矢,避免踩坑。
对多维分析和 BI 技术感兴趣的同学还可以搜索“乾学院”,上面有整套的免费“商业智能”技术课程, 或者直接访问下面链接: