【前言】
昨天论坛的SQL Server大版新增了一个BI板块,大家讨论得热火朝天,由于此前因为客户环境的问题,一直在使用sql 2000,没怎么关注这一块的东西,最近刚好要做购物篮的分析,所以到网上搜集了一些资料。为了跟大家保持“步调一致”,也写点或转点东西出来,和大家一起学习和分享。
这是很好的BI入门资料,对于还不知道BI是什么,为什么要搞BI,以及BI能做什么的朋友来说,应该还是比较有帮助的。很可惜的时候文章中的图片找不到了(文中涉及到参考图片的那部分请忽略),到网上找了一下也没找到,如果有收藏到这部分图片的朋友或看到有这部分图片的朋友,欢迎共享一下。
【转贴内容】
(1) 老板,你要这么多数据做什么?
假如你是一个商品零售公司的老板。
你的公司很先进,已经实现了业务信息化,每一笔销售单据都保存在数据库中,日积月累,已经保存了十余年的销售数据,上亿条销售记录。
这时如果我问你:“反正三年前的数据留着也白白占地方,耗费存储成本,索性把它们全删掉吧,这样不用买硬盘就能容纳新数据,如何?”
你会从容的接受我这个建议吗?
那么老板,你要这么多数据做什么?
是的,和我一样,你也已经隐约认识到数据的价值,这就是我们割舍不下历史数据的原因,就像任何一个现代化企业,甚至就像任何一个传统的票号,如百年老店般虔诚地保存着古老的数据,因为我们有直觉,我们的直觉告诉我们:这些数据有用!
但这仅仅是一种直觉,到底该怎样把这些占据大量存储空间的数据的价值挖掘出来,让这些数据从成本的消耗者变成利润的促进者?
这中间似乎缺少了某些环节。
(2) Business Intelligence - 连接数据与决策者
BI(Business Intelligence) 是一种运用了数据仓库、在线分析和数据挖掘等技术来处理和分析数据的崭新技术,目的是为企业决策者提供决策支持。
让我们振臂高呼三遍:决策支持,决策支持,决策支持!
BI 是一个工厂:
>> BI 的原材料是海量的数据;
>> BI 的产品是由数据加工而来的信息和知识;
>> BI 将这些产品推送给企业决策者;
>> 企业决策者利用 BI 工厂的产品做出正确的决策,促进企业的发展;
这就是 Business Intelligence,即商业智能——连接数据与决策者,变数据为价值。
BI 应用的两大类别是信息类应用 和 知识类应用,其特征如下表所示:
信息类 BI 应用
指由原始数据加工而来的数据查询、报表图表、多维分析、数据可视化等应用,这些应用的共同特点是:将数据转换为决策者可接受的信息,展现给决策者。
例如将银行交易数据加工为银行财务报表。
仅负责提供信息,而不会主动去分析数据。
例如,银行财务报表工具没有深入分析客户流失和银行利率之间关系的能力,而只能靠决策者结合信息,通过人的思考,得出知识。
知识类 BI 应用
指通过数据挖掘技术和工具,将数据中隐含的关系发掘出来,利用计算机直接将数据加工为知识,展现给决策者。
会主动去数据中探查数据关联关系,发掘那些决策者人脑无法迅速发掘的隐含知识,并将其以可理解的形式呈现在决策者面前。
(3) BI 初级应用模式概览——数据查询(Querying)
数据查询是最简单的 BI 应用,属于 MIS 系统遗产,虽然出身比较老土,但是目前仍然是决策者获取信息的最直接的方法。
如今,数据查询界面已经彻底摆脱了传统 SQL 命令行,大量的下拉菜单、输入框、列表框等元素甚至是鼠标拖拽界面将后台干苦力的 SQL 语句包装成一个妖艳无比的数据获取系统,而本质仍然没有离开数据查询的几大要素:
>> 查什么
>> 从哪儿查
>> 过滤条件
>> 展示方法
目前国外比较流行的数据查询应用已经完全释放了数据查询的灵活性,如右图所示的是 Cognos ReportNet 的数据查询界面 Query Studio,允许用户通过纯浏览器界面,以鼠标拖拽操作定义数据查询要素,并以报表和图表等多种方式展现数据。
(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 的核心技术之一。
我们知道,数据在数据库中是以数据表来存储的,比如某商店的销售数据存储在如下所示的一张数据表中:
销售时间 | 销售地点 | 产品 | 销售数量 | 销售金额 |
2004-11-1 | 北京 | 肥皂 | 10 | 342.00 |
2004-11-6 | 广州 | 桔子 | 30 | 123.00 |
2004-12-3 | 北京 | 香蕉 | 20 | 12.00 |
2004-12-13 | 上海 | 桔子 | 50 | 189.00 |
2005-1-8 | 北京 | 肥皂 | 10 | 342.00 |
2005-1-23 | 上海 | 牙刷 | 30 | 150.00 |
2005-2-4 | 广州 | 牙刷 | 20 | 100.00 |
决策者希望知道的往往是分布、占比、趋势之类的宏观信息,比如下列问题:
>> 北京地区的销售数量虽时间的变化趋势?
>> 哪种产品在 2005 年销售比 2004 年销售增幅最大?
>> 2004 年各产品销售额的比例分布? ……
面对这种需求,必须用 SQL 语句进行大量的 SUM 操作,每得出一个问题的结果,就需要 SQL SUM。面对上面的 7 条记录,我们可以很容易的得出结果,但是当我们面对百万级甚至亿级的记录条数时,例如移动公司通话数据,每次 SQL SUM 都需要消耗大量的时间来计算,决策者经常是在第一天提出分析需求,等到第二天才能拿到计算结果,这种分析方式是“脱机分析”,效率很低。
为了提高数据分析效率,OLAP 技术彻底打破以记录为单位的数据浏览方式,而将数据分离为“维度(Dimension)”和“度量(Measure)”:
>> 维度是观察数据的角度,例如上面示例中的“销售时间”、“销售地点”、“产品”;
>> 度量是具体考察的数量值,例如上例中的“销售数量”和“销售金额”;
这样一来,我们就可以将上面这张平版的数据列表转换为一个拥有三个维度的数据立方体( Cube ):
而探查数据的过程,就是在这个立方体中确定一个点,然后观察这个点的度量值:
当然,数据立方体并不局限于三个维度,这里采用三个维度来说明问题,只是因为通过图形可以表现出来的极限就是三个维度。
维度可以划分层次,例如时间上可以从日向上汇总为月和年,产品可以向上汇总为食品和日用品,地点可以向上汇总为华北和华南,用户可以沿着维度的层次任意向下钻取(Drill Down)和向上汇总(Roll Up):
通过这种方式,我们就可以摆脱 SQL SUM 对速度的制约,快速定位符合不同条件的细节数据,更可以迅速得到某一层次的汇总数据。OLAP 技术为决策者提供了多角度、多层次、高效率的数据探查方式,决策者的思维不再被固定的下拉菜单、查询条件所束缚,而是由决策者的思维带领数据的获取,任意组合分析角度和分析目标,这种打破传统的互动性分析和高效率使 OLAP 成为 BI 系统的核心应用。
(*) 第四喷:BI 高级应用模式 —— 数据可视化与数据挖掘
(6) BI 应用模式概览——数据可视化(Visualization)
数据可视化应用致力于将信息以尽可能多的形式展现出来,目的是使决策者通过图形这种直观的表现方式迅速获得信息中蕴藏的知识,如趋势、分布、密度等要素。 值得一提的是,以 MapInfo 公司为代表的 GIS 软件商,目前也正在努力结合 BI 应用。MapInfo 率先提出了 Location Intelligence 概念,依托于地理信息系统,展现各地区的属性值,例如人口密度,工业产值,人均医院数量等等,这种可视化应用部分与 BI 数据可视化应用重合,并形成有力补充,有时可以在一个项目中互相搭配。
上图所示的是 Cognos Visualizer 产品,这家伙用几近哗众取宠的丰富形式展现数据和信息,包含了地图、饼图、瀑布图等近五十种展现图形,并提供了二维和三维两种展现方式。所有的图形元素都是可活动的,例如用户可以通过点击地图上的某一个省,钻取到这个省各个城市的信息,这种可交互性是 BI 与普通图片生成软件的显著差异。
(7) BI 应用模式概览——数据挖掘(Data Mining)
数据挖掘是最高级的 BI 应用,因为它能代替部分人脑功能。
数据挖掘隶属于知识发现(Knowledge Discovery)在结构化数据中的特例。
数据挖掘的目的是通过计算机对大量数据进行分析,找出数据之间潜藏的规律和知识,并以可理解的方式展现给用户。
数据挖掘的三大要素是:
>> 技术和算法:目前常用的数据挖掘技术包括——
自动类别侦测(Auto Cluster Detection)
决策树(Decision Trees)
神经网络(Neural Networks)
>> 数据:由于数据挖掘是一个在已知中挖掘未知的过程,
因此需要大量数据的积累作为数据源,数据积累
量越大,数据挖掘工具就会有更多的参考点。
>> 预测模型:也就是将需要进行数据挖掘的业务逻辑由
计算机模拟出来,这也是数据挖掘的主要任务。
与信息类 BI 应用相比,以数据挖掘为代表的知识类 BI 应用目前还不成熟,但是从另一个角度来看,数据挖掘可发展的空间还很大,是今后 BI 发展的重点方向,SAS,SPSS 等知识类 BI 应用厂商形象逐渐高大,悄悄占据了新的利润增长点。
上图中是著名的 IBM Intelligent Miner 在分析客户的消费行为。它能对大量的客户数据进行分析,然后自动将客户划分为若干群体(自动类别侦测),并将每个群体的消费特征显示出来,这样决策者就能一目了然的针对不同客户的消费习惯,制定促销计划或广告计划。
上述功能如果单靠信息类 BI 应用来实现,则需要决策者根据经验进行大量的 OLAP 分析、数据查询工作,而且还不一定能发现数据中隐藏的规律。例如上述客户分类,对于一个拥有 400 万用户的银行来说,如果没有数据挖掘工具,会把人活活累死的。
(8) BI 底座——数据仓库技术(Data Warehouse)
在开始喷这个主题之前,让我们先看看数据仓库的官方定义:
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。以上是数据仓库的官方定义。
“操作型数据库”如银行里记账系统数据库,每一次业务操作(比如你存了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 厂商和产品:
首先让我们认识一下国外大人物!数据仓库方面,有 IBM DB2,Oracle,Sybase IQ,NCR Teradata 等等;BI 应用方面,有 Cognos,Business Objects,MicroStrategy,Hyperion,IBM 等等;数据挖掘方面,有 IBM,SAS,SPSS 等等。巨无霸 Microsoft 也在 BI 领域插了一腿,推出了 SQL Server Analysis Server、Reporting Services 等 BI 相关产品抢占山头!
我们往往容量只把眼光放在国外的BI大佬们而忽略国内渐渐突起的BI新军,如今国内比较出名的BI有奥威智动的Power-BI,尚南的BlueQuery 及润乾报表等,特别值得一提的是奥威智动的Power-BI是一款标准化BI,在国内已经具有一定的市场占有率。
中国的 BI 市场发展:
时间段 | 国内 BI 应用情况 |
2002 年以前 | 大量 BI 软件被看作是能从多个数据源中抽取数据的报表工作,满眼全是报表。 |
2002-2003 | OLAP 的价值终于被某些慧眼发现,一些竞争压力大的企业为了提高竞争力,迫切需要从历史数据中挖掘价值,迅速发现了 OLAP 的优势,这时销售终于不用再说“我们什么报表都能做”了。但是国家机关、垄断型企业,仍旧是报表,并且以为 BI 就是报表。 |
2004 | 随着越来越多成功 BI 项目的实施,OLAP 终于得以见天日,这时国内才形成数据查询+报表展示+OLAP分析的合理 BI 应用结构。一些数据可视化的需求也时常被用户提出,在一些竞争激烈、数据量大的企业,已经出现了数据挖掘应用。 |
2005 | 信息提供已经无法满足很多企业的要求,特别是银行、通信、证券等竞争激烈、风险密集的行业,大量涌现对数据挖掘的需求,BI 应用终于形成信息+知识的整体。 |
BI 工具在中国遇到的难题:
* 复杂表样:中国是世界上报表最复杂的国家。中国的表样设计思想与西方不同,西方报表倾向于仅用一张报表说明一个问题,而中国的报表倾向于将尽可能多的问题集中在一张报表中,这种思路直接导致了中国报表的复杂格式和诡异风格。
* 大数据量:中国是世界上人口最多的国家。以中国移动公司为例,仅我国一个省的用户数量,就相当于欧洲一个中等国家的人口,是真正的海量数据!国外数据库、数据仓库和 BI 应用软件,都在中国经受着大数据量承载能力的考验。对于美国,可能一个客户分析应用两秒钟就能出结果,但是在中国这样的数据量下,可就不是两秒钟的问题了。
* 数据回写:中国是世界上对 BI 系统要求最奇特的国家。本来 BI 系统是以忠实再现源数据为原则,但这个原则在中国遇到了难题,许多领导都提出了数据修改需求,“报表里数字不好看,就要能改啊,而且有时候也需要调整啊,这样上级领导看着就好嘛! ”一个领导如是说。目前能满足此要求的 BI 产品,仅有 Microsoft 和 MicroStrategy 两家。微软对中国市场算是吃透了。