OLAP | 基础知识梳理

还是得自己整理,梳理一遍后,清晰多了

OLAP(Online AnalyticalProcessing)是一种数据处理技术,专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持。

OLAP是数据仓库对外数据能力的一种重要的输出方式:

OLAP的起源

60年代,关系数据库之父Edgar F. Codd提出了关系模型,促进了联机事务处理OLTP( On-line Transaction Processing)的发展(数据以表格的形式而非文件方式存储)。

1993年,OLAP由被称为“关系数据库之父”的Edgar F. Codd在他的白皮书《Providing OLAP to User-Analysts: An IT Mandate》中首次提出。

他认为OLTP已不能满足终端用户对数据库查询分析的需要,SQL对大型数据库进行的简单查询也不能满足终端用户分析的要求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求。

因此,E.F.Codd提出了多维数据库和多维分析的概念,即OLAP。

他为OLAP产品建立了12条评估规则:

OLAP的发展历史

到现在为止,OLAP技术发展了20多年,正处于群雄逐鹿阶段,不知道未来有没有一统江湖的完美技术出现。

传统OLAP

根据Codd的关于OLAP的十二条准则,OLAP技术有了很大的发展,市场上的各种OLAP产品层出不穷。虽然OLAP的概念是在1993年才提出来的,但是支持OLAP相关产品的发展历史,最早可追溯到1975年:

1989年,SQL语言标准诞生,它可以从关系数据库中提取和处理业务数据。这可能是个转折点。在1980‘s年代,电子表格在OLAP应用中占绝对主导地位;而1990’s年代以后,越来越多的基于数据库的OLAP应用开始出现:

大数据OLAP

大数据方向OLAP相关技术的发展:

OLAP的基本内容

变量(度量)

变量是数据度量的指标,是数据的实际意义,即描述数据“是什么”。比如:人数。

维度

维度是描述与业务主题相关的一组属性,单个属性或属性集合可以构成一个维。比如:学历、民族、性别等都是维度。

维的层次

一个维往往可以具有多个层次,例如时间维度分为年、季度、月和日等层次,地区维可以是国家、地区、省、市等层次。这里的层次表示数据细化程度,对应概念分层。

维的成员

若维是多层次的,则不同的层次的取值构成一个维成员。部分维层次同样可以构成维成员,例如“某年某季度”、“某季某月”等都可以是时间维的成员。

多维数组

多维数组用维和度量的组合表示。一个多维数组可以表示为(维1,维2,……,维n,变量),例如(部门,职系、民族、性别,人数)组成一个多维数组。

数据单元(单元格)

多维数组的取值。当多维数组中每个维都有确定的取值时,就唯一确定一个变量的值。数据单元可以表示为(维1成员,维2成员,……,维N成员,变量的值),例如(人事教育部,技能,回族,男,1人)表示一个数据单元,表示人事教育部职系是技能的回族男性有1人。

事实

事实是不同维度在某一取值下的度量,例如上述人事教育部职系是技能的回族男性有1人就表示在部门、职系、民族、性别四个维度上企业人数的事实度量,并且在为人数事实中包含部门维度人事教育部这一个维度层次,如果将人数事实的所有维度考虑在内,就构成有关人数的多维分析立方体。

OLAP的特点

电子数据表与OLAP相比,不具备OLAP的多维性、层次、维度计算以及结构与视图分离等特点。

快速

终端用户对于系统的快速响应有很高的要求。调查表明如果用户在30秒内得不到回应,就会变得不耐烦。因此OLAP平台用了多种技术提高响应速度,例如专门的数据存储格式、大量的预处理和特殊的硬件设计等,通过减小在线分析处理的动态计算,事先存储OLAP所需粒度的数据等主要手段来获得OLAP响应速度的提高,尽管如此,查询反应慢仍然是OLAP产品中经常被提及的问题。

可分析

用户可以应用OLAP平台分析数据,也可以使用其他外部分析工具,例如电子数据表,这些分析工具基本上都以直观的方式为用户提供了分析功能。

共享

由于人们认为OLAP是只读的,仅需要简单的安全管理,导致目前许多OLAP产品在安全共享方面还存在许多问题。因此当多个用户访问OLAP服务器时,系统就在适当的粒度上加锁。

多维

维是OLAP的核心概念,多维性是OLAP的关键属性,这与数据仓库的多维数据组织正好相互补充。为了使用户能够从多个维度、多个数据粒度查看数据,了解数据蕴含的信息,系统需要提供对数据的多维分析功能,包括切片、旋转和钻取等多种操作

OLAP常见操作

OLAP的多维分析操作包括:钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及旋转(Pivot)、钻过(drill-across)、钻透(drill-through)

立方体的每个单元,存放一个聚合值。

  •  钻过(drill-across):钻过操作涉及多个事实表的查询并把结果合并为单个数据集。一个典型的例子就是预测数据与当前数据的结合:通常预测数据与当前数据存在于不同的表中,当用户比较预测销售与当月销售时,需要跨多个事实表查询。

  • 钻透(drill-through):钻透使用关系SQL,查询数据立方体的底层,一直到后端的关系表。

OLAP的分类

按建模类型分类

一般来说OLAP根据建模方式可分为MOLAP、ROLAP和HOLAP 3种主流类型,另外还有混合事务/分析处理(HTAP)、网络OLAP(WOLAP),桌面OLAP(DOLAP),移动OLAP(MOLAP)和空间OLAP(SOLAP)。

按处理数据量分类

工作中的实际情况是:几种数据引擎混合用,互相补充。

比如离线处理会先用hive或者sparksql跑出数据,对于数据量比较大的,先做一些汇总,再导入clickhouse等数据库,做自助分析。还有个别数据量大,clickhouse不能很好支持,但又需要临时摸底看数时,就要通过spark sql取数,这个就是数仓开发经常处理的临时提数任务。

按功能分类

OLAP系统核心技术点

参考:

http://olap.com/learn-bi-olap/olap-business-intelligence-history/

https://cn.kyligence.io/blog/olap-core-tech/

https://segmentfault.com/a/1190000040428093

推荐阅读:

数仓面试——日期交叉问题

数仓面试——连续登录问题进阶版

数仓面试——连续登录问题


Hey!

我是小萝卜算子

欢迎关注:数据仓库践行者

分享是最好的学习,这里记录我对数据仓库的实践的思考和总结

每天学习一点点

知识增加一点点

思考深入一点点

在成为最厉害最厉害最厉害的道路上

很高兴认识你

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小萝卜算子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值