老规矩,先看是什么,再说怎么做。要看懂这篇文章,先要理解这几个概念:
BI又叫商业智能,简单点说就是从本质上改变企业做决策拍脑袋的情况。BI的定义分为广义和狭义两种。
可以通过丰富的场景看一下:
广义上的BI可以定义为一个系统方案,包含了从数据仓库,到ETL(数据清洗),OLAP分析,以及深度的数据挖掘,前端报表展现。
在具体企业数据分析项目中,会将它们中的若干个结合起来,实现一个完整的企业数据分析技术方案,整体架构如下图:
数据仓库定义,我们这里不看那些复杂的解释,给大家举个例子:
其实数据仓库可以看成是BI的基础版本、数据库的升级版本,我们可以把公司里的数据都想象成一个个文件夹,数据库就是这一个个文件柜,这个文件柜存放着非常多的数据,无论这个数据是什么、或者是如何组织的。
而当我们的文件非常多、种类非常复杂的时候,我们的就想要寻找某个文件夹的时候,如果每个文件柜每个文件柜的去找,实际上是非常耗费成本的,因此我们不妨建立一个档案室,对不同的文件柜进行编号、归类、分组,方便我们快速定位数据源,这个档案室就是数据仓库。
数据仓库的输入方式各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向,支撑企业决策
所以从广义BI上来理解,数据仓库是BI的基石,数据仓库为BI系统提供良好的数据基础,为分析决策提供数据支持,也就是地基和房子之间的关系。
接下来再说说狭义BI和数据仓库的关系。
传统的BI方案的数据仓库、ETL、OLAP分析、数据挖掘,前端报表展现的各个环节都是不同的产品,不同的专人负责。假设一个分析报告要改动,涉及到数据层。则要IT部门去改进数据层和业务层,需要耗费很长时间去梳理模型。
于是,随着技术发展,市场上出现了敏捷型的BI产品,也就是狭义上的BI, 把数据建模和和OLAP分析都集成到应用里了, 不用事先建模。
在做报表,拖拽数据字段的时候,就能随机看到分析结果,做到即时分析,且在分析过程中灵活调整分析维度和报表展现,需求变更可以在一天之内响应。
比如FineBI,作为数据分析工具,简单容易、可视化酷炫、性能好、稳定性强是其优点,我就不过多赘述。
在利用BI工具构建BI系统的时候并不一定需要数据仓库,在数据库的基础上搭建也行。但是对于中大型企业,考虑到日常事务多,数据量大,数据库往往要做更多的写优化,在这样的背景下通过构建数据仓库。
将数据通过ETL过程抽取到数据仓库,在此基础上利用BI工具做数据分析与前端展现会更加高效,所以在很多BI项目中,BI工具承担的主要还是前段分析、展示的作用,也就是上面架构图中最右边的部分。
其实很多企业做数据仓库的时候,都忽略了数仓与BI、数据库的差异,只去搞底层数据,不去做数据服务和应用,其实就是把数据仓库给狭义化了。
所以这时候我们需要更为庞大的数据仓库,帮助我们去对多个数据源的数据库数据进行抓取,而抓取数据源的过程就可以理解为ETL的工作,这样去理解一个企业的数据架构就会简单很多。
因此数据仓库的本质,其实就是整合多个数据源的历史数据进行细粒度的、多维的分析,帮助高层管理者或者业务分析人员做出商业战略决策或商业报表。
这里面就涉及到了数据仓库的架构,简单来说数据仓库分为四个层次,
- ODS层:存放原始数据,直接加载原始日志、数据,数据保存原貌不做处理。
- DWD层:结构与粒度原始表保持一致,对ODS层数据进行清洗
- DWS层:以DWD为基础,进行轻度汇总
- ADS层:为各种统计报表提供数据
这里要注意数据仓库的架构当中,各个系统的元数据通过ETL同步到操作性数据仓库ODS中,对ODS数据进行面向主题域建模形成DW(数据仓库),DM是针对某一个业务领域建立模型,具体用户(决策层)查看DM生成的报表。
说到报表,我就要提一下FineReport了,熟悉我的人都知道,我不仅一次提过它,不仅能做报表的基础操作:填报、查询、打印、权限等,对于可视化大屏和移动端dashboard也是不在话下,不好意思,扯远了....
也就是说,我们所看到的数据不是直接从数据底层抽取的,相当于我们访问数据仓库的时候,是让图书管理员帮你找一个文件柜,那么怎么更高效地去找,就是数据仓库建设中很重要的一部分工作——数据建模,包括数据的存储模型、逻辑模型、概念模型等等。
这个后面会写到。