文 | 穆晨

▍创建数据仓库

数据仓库的创建方法和数据库类似,也是通过编写DDL语句来实现。在过去,数据仓库系统大都建立在RDBMS上,因为维度建模其实也可以看做是关系建模的一种。但如今随着开源分布式数据仓库工具如Hadoop Hive,Spark SQL的兴起,开发人员往往将建模和实现分离。使用专门的建模软件进行ER建模、关系建模、维度建模,而具体实现则在Hive/Spark SQL下进行。没办法,谁让这些开源工具没有提供自带的可视化建模插件呢。

话说现在的开源分布式工具都是"散兵作战",完成一个大的项目要组合N个工具,没有一个统一的开发平台。还有就是可视化效果比较差,界面很难看或者没有界面。个人建议在资金足够的情况下尽量使用商用大数据平台来开发,虽然这些商用产品广告打得多少有点夸张,但是它们的易用性做的是真好。这里笔者推荐帆软的BI平台,附链接:https://www.finebi.com/。

▍ETL:抽取、转换、加载

在本系列第一篇中,曾大致介绍了该环节,它很可能是数据仓库开发中最耗时的阶段。

ETL工作的实质就是从各个数据源提取数据,对数据进行转换,并最终加载填充数据到数据仓库维度建模后的表中。只有当这些维度/事实表被填充好,ETL工作才算完成。接下来分别对抽取,转换,加载这三个环节进行讲解:

1. 抽取(Extract)

数据仓库是面向分析的,而操作型数据库是面向应用的。显然,并不是所有用于支撑业务系统的数据都有拿来分析的必要。因此,该阶段主要是根据数据仓库主题、主题域确定需要从应用数据库中提取的数。

具体开发过程中,开发人员必然经常发现某些ETL步骤和数据仓库建模后的表描述不符。这时候就要重新核对、设计需求,重新进行ETL。正如数据库系列的这篇中讲到的,任何涉及到需求的变动,都需要重头开始并更新需求文档。

2. 转换(Transform)

转换步骤主要是指对提取好了的数据的结构进行转换,以满足目标数据仓库模型的过程。此外,转换过程也负责数据质量工作,这部分也被称为数据清洗(data cleaning)。数据质量涵盖的内容可具体参考这里。

3. 加载(Load)

加载过程将已经提取好了,转换后保证了数据质量的数据加载到目标数据仓库。加载可分为两种L:首次加载(first load)和刷新加载(refresh load)。其中,首次加载会涉及到大量数据,而刷新加载则属于一种微批量式的加载。

多说一句,如今随着各种分布式、云计算工具的兴起,ETL实则变成了ELT。就是业务系统自身不会做转换工作,而是在简单的清洗后将数据导入分布式平台,让平台统一进行清洗转换等工作。这样做能充分利用平台的分布式特性,同时使业务系统更专注于业务本身。

▍OLAP/BI工具

数据仓库建设好以后,用户就可以编写SQL语句对其进行访问并对其中数据进行分析。但每次查询都要编写SQL语句的话,未免太麻烦,而且对维度建模数据进行分析的SQL代码套路比较固定。于是,便有了OLAP工具,它专用于维度建模数据的分析。而BI工具则是能够将OLAP的结果以图表的方式展现出来,它和OLAP通常出现在一起。(注:本文所指的OLAP工具均指代这两者。)

在规范化数据仓库中OLAP工具和数据仓库的关系大致是这样的:

这种情况下,OLAP不允许访问中心数据库。一方面中心数据库是采取规范化建模的,而OLAP只支持对维度建模数据的分析;另一方面规范化数据仓库的中心数据库本身就不允许上层开发人员访问。而在维度建模数据仓库中,OLAP/BI工具和数据仓库的关系则是这样的:

在维度建模数据仓库中,OLAP不但可以从数据仓库中直接取数进行分析,还能对架构在其上的数据集市群做同样工作。对该部分讲解感到模糊的读者请重看上篇中三种数据仓库建模体系部分。

▍数据立方体(Data Cube)

在介绍OLAP工具的具体使用前,先要了解这个概念:数据立方体(Data Cube)。

很多年前,当我们要手工从一堆数据中提取信息时,我们会分析一堆数据报告。通常这些数据报告采用二维表示,是行与列组成的二维表格。但在真实世界里我们分析数据的角度很可能有多个,数据立方体可以理解为就是维度扩展后的二维表格。下图展示了一个三维数据立方体:

尽管这个例子是三维的,但更多时候数据立方体是N维的。它的实现有两种方式,本文后面部分会讲到。其中上一篇讲到的星形模式就是其中一种,该模式其实是一种连接关系表与数据立方体的桥梁。但对于大多数纯OLAP使用者来讲,数据分析的对象就是这个逻辑概念上的数据立方体,其具体实现不用深究。对于这些OLAP工具的使用者来讲,基本用法是首先配置好维表、事实表,然后在每次查询的时候告诉OLAP需要展示的维度和事实字段和操作类型即可。

下面介绍数据立方体中最常见的五大操作:切片,切块,旋转,上卷,下钻

1. 切片和切块(Slice and Dice)

在数据立方体的某一维度上选定一个维成员的操作叫切片,而对两个或多个维执行选择则叫做切块。下图逻辑上展示了切片和切块操作:

这两种操作的SQL模拟语句如下,主要是对WHERE语句做工作:

# 切片

SELECT Locates.地区, Products.分类, SUM(数量)FROM Sales, Dates, Products, LocatesWHERE Dates.季度 = 2    AND Sales.Date_key = Dates.Date_key    AND Sales.Locate_key = Locates.Locate_key    AND Sales.Product_key = Products.Product_keyGROUP BY Locates.地区, Products.分类 # 切块SELECT Locates.地区, Products.分类, SUM(数量)FROM Sales, Dates, Products, LocatesWHERE (Dates.季度 = 2 OR Dates.季度 = 3) AND (Locates.地区 = '江苏' OR Locates.地区 = '上海')    AND Sales.Date_key = Dates.Date_key    AND Sales.Locate_key = Locates.Locate_key    AND Sales.Product_key = Products.Product_keyGROUP BY Dates.季度, Locates.地区, Products.分类

2. 旋转(Pivot)

旋转就是指改变报表或页面的展示方向。对于使用者来说,就是个视图操作,而从SQL模拟语句的角度来说,就是改变SELECT后面字段的顺序而已。下图逻辑上展示了旋转操作:

3. 上卷和下钻

上卷可以理解为"无视"某些维度;下钻则是指将某些维度进行细分。下图逻辑上展示了上卷和下钻操作:

这两种操作的SQL模拟语句如下,主要是对GROUP BY语句做工作:

# 上卷

SELECT Locates.地区, Products.分类, SUM(数量)FROM Sales, Products, LocatesWHERE Sales.Locate_key = Locates.Locate_keyAND Sales.Product_key = Products.Product_keyGROUP BY Locates.地区, Products.分类 # 下钻SELECT Locates.地区, Dates.季度, Products.分类, SUM(数量)FROM Sales, Dates, Products, LocatesWHERE Sales.Date_key = Dates.Date_keyAND Sales.Locate_key = Locates.Locate_keyAND Sales.Product_key = Products.Product_keyGROUP BY Dates.季度.月份, Locates.地区, Products.分类

4. 其他OLAP操作

除了上述的几个基本操作,不同的OLAP工具也会提供自有的OLAP查询功能,如钻过,钻透等,本文不一一进行讲解。通常一个复杂的OLAP查询是多个这类OLAP操作叠加的结果。

▍OLAP的架构模式

1. MOLAP

MOLAP架构会生成一个新的多维数据集,也可以说是构建了一个实际数据立方体。其架构如下图所示:

在该立方体中,每一格对应一个直接地址,且常用的查询已被预先计算好。因此每次的查询都是非常快速的,但是由于立方体的更新比较慢,所以是否使用这种架构得具体问题具体分析。

2. ROLAP

ROLAP架构并不会生成实际的多维数据集,而是使用星形模式以及多个关系表对数据立方体进行模拟。其架构如下图所示:

显然,这种架构下的查询没有MOLAP快速。因为ROLAP中,所有的查询都是被转换为SQL语句执行的。而这些SQL语句的执行会涉及到多个表之间的JOIN操作,没有MOLAP速度快。

3. HOLAP

这种架构综合参考MOLAP和ROLAP而采用一种混合解决方案,将某些需要特别提速的查询放到MOLAP引擎,其他查询则调用ROLAP引擎。

笔者发现一个有趣的现象,很多工具的发展都满足这个规律:工具A被创造,投入使用后发现缺点;然后工具B为了弥补这个缺点而被创造,但是带来了新的缺点;然后就会用工具C被创造,根据不同情况调用A和B。比较无语......

▍小结

本文是数据仓库系列的最后一篇。一路下来,读者有木有发现数据仓库系统的开发是一个非常浩大的工程呢?

确实,整个数据仓库系统的开发会涉及到各种团队:数据建模团队,业务分析团队,系统架构团队,平台维护团队,前端开发团队等等。对于志在从事这方面工作的人来说,需要学习的还有很多。但对于和笔者一样志在成为一名优秀"数据科学家"的人来说,这些数据基础知识已经够用了。笔者看来,数据科学家的核心竞争优势在三个方面:数据基础,数据可视化,算法模型。这三个方面需要投入的时间成本递增,而知识的重要性递减。因此,数据库系列和数据仓库系列是性价比最高的两个系列哦。

欢迎关注我的公众号“商业智能研究”,私信回复“资料包”,即可领取大数据、数据中台、商业智能、数据仓库等6G精华资料!

数据仓库的ETL、OLAP和BI应用相关推荐

  1. 数据仓库(ETL)、数据仓库工具Informatica介绍

    一.数据仓库(ETL) 数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision-Support)[将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据 ...

  2. 转贴:如何从优化SQL入手提高数据仓库的ETL效率 作者:周四阳 蔡自兴

    如何从优化SQL入手提高数据仓库的ETL效率     作者:周四阳 蔡自兴 1 引言     数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取.转换和装载到模型的过 ...

  3. BI、数据仓库、ETL、大数据开发工程师有什么区别?

    一味的解释 数据仓库 概念可能没意思,我们从不同角色出发吧 老板 :我是一家手机公司的老板,今天要向去董事局汇报,我要准备一份介绍过去三年的用户增长.用户留存.用户活跃度.手机里面每个APP使用率等情 ...

  4. BI, 数据仓库,ETL, 数据开发,有什么区别?

    BI: Business Intelligence. 为商业提供一切智能化操作,判断与管理的手段,都可以归拢到 BI 范畴.即便是 AI (Artificial Intelligence)只要其能提供 ...

  5. 什么是数据仓库?(转.net BI)

    因为是转载,首先将原文的链接粘出来:http://www.cnblogs.com/xugang2008/archive/2009/07/09/1519777.html 本文小白我只是看过,感觉对于和我 ...

  6. 外部工具连接SaaS模式云数据仓库MaxCompute实战:商业BI分析工具篇

    简介:MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速.全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户运 ...

  7. 漫画:什么是数据仓库和ETL?

    一个故事 在很久很久以前,世界上生活着许多种族,有人类,有矮人,有精灵......他们有着不同的信仰,不同的文化,彼此相安无事.可是,有一个猥琐男却偏偏想要统治整个世界. 如何统治这么多不同文化信仰的 ...

  8. 数据仓库之 ETL漫谈

    http://superlxw1234.iteye.com/blog/1666960 ETL,Extraction-Transformation-Loading的缩写,中文名称为数据抽取.转换和加载. ...

  9. 从如何优化SQL入手,提高数据仓库的ETL效率

    1        引言 数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取.转换和装载到模型的过程,整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现 ...

最新文章

  1. linux下删除乱码文件
  2. 华为荣耀8青春版计算机在哪里,华为荣耀8青春版
  3. 为啥看恐怖片老是忘不掉?最新研究:恐惧记忆的形成方式更利于稳定存储
  4. 怎么在Mac上安装Tomcat 7
  5. python时间倒计时显示屏厂家_python 实现倒计时功能(gui界面)
  6. 拓扑一致体参数化的复杂模型的等几何分析计算重用
  7. 你知道怎么用Python发送邮件吗?
  8. 视频、画面、语言、文字与脑海、心灵
  9. 拼接Sql语句的写法
  10. 团体程序设计天梯赛-练习集——7-9 打印学生选课清单 (25分)
  11. dell12v18a怎么改_拆修DELL 12V 18A电源!
  12. 没事别想不开去创业公司
  13. 计算机c语言入门.ppt,计算机c语言入门经典
  14. 水晶苍蝇拍-微薄投资感悟
  15. 智能照明系统雏形(esp8266nodemcu开发板+点灯科技软件+声控模块+光敏模块+人体感应模块)
  16. Node.js中的异步编程,个人理解及分化讲解
  17. 用simple mapi 发送一个带附件的邮件
  18. 放大器构成电压跟随器 proteus仿真 TLV2252
  19. 首篇NLP领域图神经网络综述:127页,从图构建到实际应用面面观
  20. SMLT中增加新的语言

热门文章

  1. oracle报无效月份 注册表,在oracle中插入时间时出现“无效的月份”解决方法
  2. 热点分析图_通过分析功率MOSFET管的工作特性,判断其损坏原因
  3. react 导航条选中颜色_调整安卓手机的颜色以更好地查看一切
  4. CSS中背景颜色、背景图片、渐变色、背景定位、精灵图(雪碧图)介绍
  5. 产品经理如何通过拆产品,持续提升产品能力?附案例
  6. 水环境模型与大数据技术融合研究
  7. 作者:Ochora Dennis Reagan(1990-),男,东北大学软件学院硕士生
  8. 【2016年第4期】研究(国家自然科学基金项目成果集萃)导读
  9. 【软件测试】软件测试札记
  10. 文本处理三剑客awk的使用