OLAP梳理(Online Analytical Processing)
基本概念:
OLAP面向的是复杂的多维数据模型
一般底层的数据结构是一个二维的数据表的样子
因为会涉及到维度按照度量拍序,度量按照维度排序,所以二维数据表的排序算法很重要(会涉及到多维度比较器链,这里不是一个维度参与排序,类似于sql的order by a,b,c….),我们NewBI用的排序算法应该是自己开发的一个简易的快速排序
NewBI中的OLAP的算法不是很多不是很复杂,主要复杂的地方有OLAP查询的结果集合并,就是两个二维表结果集合并,交叉表构建(难点)
OLAP的核心研究对象是Cube模型(有的也叫,数据立方)
包含了三个基本分析操作:
下钻
按照日期维度(年->月->日)角度去对数据进行查看
按照地理维度(国家->省份->城市->乡村)逐步下钻查看
上卷
下钻的反向操作
切片和切块
比如数据集中筛取一组数据(切片),从不同的角度(切块)去查看(比如订单,从时间,渠道,sku等)
OLAP的建模及优化(难点)
- 星型模型和雪花模型的逻辑建模
- 根据查询维度动态优化cube,比如没有用到某一个表的维度字段,那么可以在查询的时候不去做join,将模型简化
SQL解析(难点)
将cube的多维数据查询模型,解析成AST语法树,然后翻译成sql或者MDX语法,交给数据库执行或者生成MR。这里面会涉及到如sql优化,结果映射等
其他的思想
分治思想(forkjoin)
sql优化、数据压缩等
这个是BI这种T+1的OLAP思想