现在我们 Xerdoc 团队在做的事情,已经牵涉到 BI 的概念,BI 这个词的词频也在团队内呈现上升态势。BI这个词是我带进来的,但从一开始,我就一直没有机会向诸位队友系统讲述过什么叫 BI;索性现在在这里科普一下,把我四年积累的知识给诸位来一个速成,让我们共同开阔视野,活跃思维。
(1) 老板,你要这么多数据做什么? | |
假如你是一个商品零售公司的老板。 你的公司很先进,已经实现了业务信息化,每一笔销售单据都保存在数据库中,日积月累,已经保存了十余年的销售数据,上亿条销售记录。 这时如果我问你:“反正三年前的数据留着也白白占地方,耗费存储成本,索性把它们全删掉吧,这样不用买硬盘就能容纳新数据,如何?” 你会从容的接受我这个建议吗? 是的,和我一样,你也已经隐约认识到数据的价值,这就是我们割舍不下历史数据的原因,就像任何一个现代化企业,甚至就像任何一个传统的票号,如百年老店般虔诚地保存着古老的数据,因为我们有直觉,我们的直觉告诉我们:这些数据有用! 但这仅仅是一种直觉,到底该怎样把这些占据大量存储空间的数据的价值挖掘出来,让这些数据从成本的消耗者变成利润的促进者? 这中间似乎缺少了某些环节。 |
(2) Business Intelligence - 连接数据与决策者 | |||||||
BI(Business Intelligence) 是一种运用了数据仓库、在线分析和数据挖掘等技术来处理和分析数据的崭新技术,目的是为企业决策者提供决策支持。 让我们振臂高呼三遍:决策支持,决策支持,决策支持! BI 是一个工厂: >> BI 的原材料是海量的数据; >> BI 的产品是由数据加工而来的信息和知识; >> BI 将这些产品推送给企业决策者; >> 企业决策者利用 BI 工厂的产品做出正确的决策,促进企业的发展; 这就是 Business Intelligence,即商业智能——连接数据与决策者,变数据为价值。 BI 应用的两大类别是 信息类应用 和 知识类应用,其特征如下表所示:
|
(3) BI 初级应用模式概览——数据查询(Querying) |
类别:信息类应用; 星级:*____
|
数据查询是最简单的 BI 应用,属于 MIS 系统遗产,虽然出身比较老土,但是目前仍然是决策者获取信息的最直接的方法。 如今,数据查询界面已经彻底摆脱了传统 SQL 命令行,大量的下拉菜单、输入框、列表框等元素甚至是鼠标拖拽界面将后台干苦力的 SQL 语句包装成一个妖艳无比的数据获取系统,而本质仍然没有离开数据查询的几大要素: >> 从哪儿查 >> 过滤条件 >> 展示方法 |
(4) BI 初级应用模式概览——报表(Reporting) |
类别:信息类应用; 星级:**___
|
报表是国内最热衷的 BI 应用之一,这与报表在我国企事业单位中的历史地位是分不开的。我国的报表以其格式诡异、数据集中、规则古怪等特征著称于世,曾经让无数国外报表工具和 BI 工具捶胸顿足。 报表的两大要素是数据和格式,如果没有格式,则报表应用几乎等同于数据查询应用。可以说,报表就是将查询出来的数据按照指定的格式展现。 报表应用包含了报表展现和报表制作两大模块。报表展现就是让决策者看到报表,并允许决策者通过条件定义来选择报表数据,例如选择报表年度、部门、机构等 等;报表制作面向报表的开发人员,其格式定义灵活性、数据映射灵活性、计算方法的丰富程度等均影响了 BI 报表应用的质量。 需要澄清一下的是,Microsoft Excel 不算是一个 BI 报表工具,因为 Excel 没有连接数据源的能力,充其量是一个 Spread Sheet。但是 Excel 强大的格式功能让报表制作人员竟折腰,乃至到后来,几乎所有 BI 厂商都提供了面向 Microsoft Excel 的插件,通过插件,Excel 可以连接到 BI 的数据源上,摇身一变为 BI 报表工具,丑小鸭变天鹅。 | |
|
(5) BI 高级应用模式概览——在线分析(OnLine Analytical Processing,OLAP) |
类别:信息类应用; 星级:*****
| ||||||||||||||||||||||||||||||||||||||||||||||||||
OLAP ,即联机分析处理,是 BI 带来的一种全新的数据观察方式,是 BI 的核心技术之一。 我们知道,数据在数据库中是以数据表来存储的,比如某商店的销售数据存储在如下所示的一张数据表中:
决策者希望知道的往往是分布、占比、趋势之类的宏观信息,比如下列问题: >> 北京地区的销售数量虽时间的变化趋势? >> 哪种产品在 2005 年销售比 2004 年销售增幅最大? >> 2004 年各产品销售额的比例分布? …… 面对这种需求,必须用 SQL 语句进行大量的 SUM 操作,每得出一个问题的结果,就需要 SQL SUM。面对上面的 7 条记录,我们可以很容易的得出结果,但是当我们面对百万级甚至亿级的记录条数时,例如移动公司通话数据,每次 SQL SUM 都需要消耗大量的时间来计算,决策者经常是在第一天提出分析需求,等到第二天才能拿到计算结果,这种分析方式是“脱机分析”,效率很低。 为了提高数据分析效率,OLAP 技术彻底打破以记录为单位的数据浏览方式,而将数据分离为“维度(Dimension)”和“度量(Measure)”: >> 维度是观察数据的角度,例如上面示例中的“销售时间”、“销售地点”、“产品”; >> 度量是具体考察的数量值,例如上例中的“销售数量”和“销售金额”; 这样一来,我们就可以将上面这张平版的数据列表转换为一个拥有三个维度的数据立方体( Cube ): 而探查数据的过程,就是在这个立方体中确定一个点,然后观察这个点的度量值:
当然,数据立方体并不局限于三个维度,这里采用三个维度来说明问题,只是因为通过图形可以表现出来的极限就是三个维度。 维度可以划分层次,例如时间上可以从日向上汇总为月和年,产品可以向上汇总为食品和日用品,地点可以向上汇总为华北和华南,用户可以沿着维度的层次任意向下钻取(Drill Down)和向上汇总(Roll Up): 通过这种方式,我们就可以摆脱 SQL SUM 对速度的制约,快速定位符合不同条件的细节数据,更可以迅速得到某一层次的汇总数据。OLAP 技术为决策者提供了多角度、多层次、高效率的数据探查方式,决策者的思维不再被固定的下拉菜单、查询条件所束缚,而是由决策者的思维带领数据的获取,任意 组合分析角度和分析目标,这种打破传统的互动性分析和高效率使 OLAP 成为 BI 系统的核心应用。 下图是 Cognos Powerplay 提供的 OLAP 分析界面,用户仅需把自己感兴趣的维度和度量拖拽到相应位置,就能获得图表和报表:
|
(*) 第四喷:BI 高级应用模式 —— 数据可视化与数据挖掘 |
(6) BI 应用模式概览——数据可视化(Visualization) |
类别:信息类应用; 星级:****_
|
一图胜千言。 数据可视化应用致力于将信息以尽可能多的形式展现出来,目的是使决策者通过图形这种直观的表现方式迅速获得信息中蕴藏的知识,如趋势、分布、密度等要素。 值得一提的是,以 MapInfo 公司为代表的 GIS 软件商,目前也正在努力结合 BI 应用。MapInfo 率先提出了 Location Intelligence 概念,依托于地理信息系统,展现各地区的属性值,例如人口密度,工业产值,人均医院数量等等,这种可视化应用部分与 BI 数据可视化应用重合,并形成有力补充,有时可以在一个项目中互相搭配。 |
(7) BI 应用模式概览——数据挖掘(Data Mining) |
类别:知识类应用; 星级:*****
| |
数据挖掘是最高级的 BI 应用,因为它能代替部分人脑功能。 数据挖掘隶属于知识发现(Knowledge Discovery)在结构化数据中的特例。 数据挖掘的目的是通过计算机对大量数据进行分析,找出数据之间潜藏的规律和知识,并以可理解的方式展现给用户。 数据挖掘的三大要素是: >> 技术和算法:目前常用的数据挖掘技术包括—— >> 数据:由于数据挖掘是一个在已知中挖掘未知的过程, >> 预测模型:也就是将需要进行数据挖掘的业务逻辑由 与信息类 BI 应用相比,以数据挖掘为代表的知识类 BI 应用目前还不成熟,但是从另一个角度来看,数据挖掘可发展的空间还很大,是今后 BI 发展的重点方向,SAS,SPSS 等知识类 BI 应用厂商形象逐渐高大,悄悄占据了新的利润增长点。 | ||
|
(8) BI 底座——数据仓库技术(Data Warehouse) |
类别:大地母亲;星级:_____
|
在开始喷这个主题之前,让我们先看看数据仓库的官方定义: “操作型数据库”如银行里记账系统数据库,每一次业务操作(比如你存了5元钱),都会立刻记录到这个数据库中,长此以往,满肚子积累的都是零碎的数据,这种干脏活累活还不得闲的数据库就叫“操作型数据库”,面向的是业务操作。 “数据仓库”用于决策支持,面向分析型数据处理,不同于操作型数据库;另外,数据仓库是对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。 操作型数据库 、数据仓库与数据库之间的关系,就像 C:、D: 与硬盘之间的关系一样,数据库是硬盘,操作型数据库是 C:,数据仓库是 D:,操作型数据库与数据仓库都存储在数据库里,只不过表结构的设计模式和用途不同。 | |
| |
那么为什么要在操作型数据库和 BI 之间加这么一层“数据仓库”呢? 一是因为操作型数据库日夜奔忙,以快速响应业务为主要目标,根本没精力伺候 BI 这边的数据需求,而且 BI 这边的数据需求通常是汇总型的,一个 select sum(xx) group by xx 就能让操作型数据库耗费大量资源,业务处理跟不上趟,麻烦就大了,比如你存了 5000 元钱,发现十分钟后钱还没到账,作何感想?一定是该银行的领导在看饼图? | |
二是因为企业中一般存在有多个应用,对应着多个操 作型数据库,比如人力资源库、财务库、销售单据库、库存货品库等等,BI 为了提供全景的数据视图,就必须将这些分散的数据综合起来,例如为了实现一个融合销售和库存信息的 OLAP 分析,BI 工具必须能够高效的取得两个数据库中的数据,这时最高效的方法就是将数据先整合到数据仓库中,而 BI 应用统一从数据仓库里取数。 | |
| |
将分散的操作型数据库中的数据整合到数据仓库中是一门大学问,催生了数据整合软件的市场。这种整合并不是简单的将表叠加在一起,而是必须提取出每个操作型 数据库的维度,将共同的维度设定为共用维度,然后将包含具体度量值的数据库表按照主题统一成若干张大表(术语“事实表”,Fact Tables),按照维度-度量模型建立数据仓库表结构,然后进行数据抽取转换。后续的抽取一般是在操作性数据库负载比较小的时候(如凌晨),对新数据进 行增量抽取,这样数据仓库中的数据就会形成积累。 | |
| |
大多数 BI 应用并不要求获取实时的数据,比如决策者,只需要在每周一看到上周的周报就可以了,95% 的 BI 应用都不要 求实时性,允许数据有 1 小时至 1 个月不等的滞后,这是决策支持系统的应用特点,这个滞后区间就是数据抽取工具工作的时间。当然,BI 应用中通常还将包含极少的对实时数据的要求,这时仅需针对这些特殊需求,将 BI Querying 软件直接连接在业务数据库上就可以了,但是必须限制负载,禁止做复杂查询。 目前的数据库产品都对数据仓库提供有专门优化,例如在安装 MySQL 的高版本时,安装成序会询问你是想让数据库实例作为 Transaction-Oriented ,还是 Decision Support ,前者就是操作型数据库,后者就是数据仓库(决策支持么,再振臂高呼一遍),针对这两种形式,数据库将提供针对性的优化。 |
(9) BI 花边 | |||||||||||||||||||||
BI 的相关知识大致就是这样了,写一些花边作为结束语吧。 BI 要害:BI 无法处理非结构化数据,只能处理数字信息,但是在企业中,还存在有大量像文本、流媒体、图片等非结构化的数据,这些数据同样蕴藏有大量价值,但是面对这些 数据,目前的 BI 工具无能为力。比较靠谱的是 IBM Intelligent Miner for Text,但是它在处理中文方面似乎十分薄弱。 中国的 BI 市场发展:
BI 工具在中国遇到的难题: * 复杂表样:中国是世界上报表最复杂的国家。中国的表样设计思想与西方不同,西方报表倾向于仅用一张报表说明一个问题,而中国的报表倾向于将尽可能多的问题集中在一张报表中,这种思路直接导致了中国报表的复杂格式和诡异风格。
* 大数据量:中国是世界上人口最多的国家。以中国移动公司为例,仅我国一个省的用户数量,就相当于欧洲一个中等国家的人口,是真正的海量数据!国外数据库、 数据仓库和 BI 应用软件,都在中国经受着大数据量承载能力的考验。对于美国,可能一个客户分析应用两秒钟就能出结果,但是在中国这样的数据量下,可就不是两秒钟的问题 了。 * 数据回写:中国是世界上对 BI 系统要求最奇特的国家。本来 BI 系统是以忠实再现源数据为原则,但这个原则在中国遇到了难题,许多领导都提出了数据修改需求,“报表里数字不好看,就要能改啊,而且有时候也需要调整啊, 这样上级领导看着就好嘛! ”一个领导如是说。目前能满足此要求的 BI 产品,仅有 Microsoft 和 MicroStrategy 两家。微软对中国市场算是吃透了。 |