商业智能
规划您的首个 Microsoft BI 解决方案
Stacia Misner
概览:
- BI 简介
- 避免企业数据库的常见问题
- Microsoft BI 堆栈演练
- 构建简单的解决方案
大多数数据库管理员 (DBA) 在管理其组织的数据和 Microsoft SQL Server 实现时都遇到过某种形式的商业智能 (BI)。 很多其他不具备数据库管理员职责的 IT 专业人员也可能听说过 BI,只是未曾直接体验过 BI 或确切知道它是什么。 在本文中,我将向您详细阐述 BI 的概念。 一旦您知道 BI 技术有什么作用,以及如何在 Microsoft BI 平台上构建 BI 解决方案后,您就会了解为什么 BI 不仅适用于数据库管理员了。 如果您了解 BI,您就可以在您的组织需要实施 BI 时(一定会需要的)更好地服务于 BI 任务,并且您还会知道如何利用 BI 来跟踪和分析与您的角色有关的数据,从而使您的工作更加轻松,同时加深自己对这些数据的理解。
本文是介绍 Microsoft BI 堆栈的系列文章中的第一篇。 在这开篇文章中,我将定义 BI 概念,并简要介绍 BI 解决方案的高级体系结构。 此外我还将提供一些有关构建 BI 解决方案的经验和知识。 要深入了解本文中提到的 SQL Server BI 技术,您可以阅读本期中由 Derek Comingore 编写的配套文章(参见“ 为 BI 解决方案构建数据基础”),以及即将在以后各期中推出的由 Scot Reagin 和我编写的文章。
BI 是什么?
几年前,当我还是商业智能:更快更好地作出决策(微软出版社,2002 年)的共同作者时,我就感到非常惊讶,因为我和我的合作伙伴在哪些技术应视为属于 BI 领域范畴,因而应该在那本书中介绍的问题上,竟然存在这么大的意见分歧。 对于哪些工具是 BI 工具,而哪些工具不是,在 BI 专家之间居然能够听到这么对立的意见,这实在是一个非常有启迪意义的经验。 在 IT 行业中,这种观点的差异仍然存在,许多人还在围绕 BI 的定义争论不休。 对我来说,BI 是一个既有业务流程特点又有技术特点的概念,因此我们便从这个角度开始来定义 BI。
从业务流程角度来讲,BI 是您执行的一系列活动,目的是为了收集和分析数据,以便可以做出更好的决策,并通过与其他人共享分析结果来改进您的业务。 您是否需要信息以确定如何提高您的日常工作效率或支持长期规划(例如下一年的预算,要采取什么步骤来查找、传输、格式化和研究数据等等),这都属于 BI 的范畴。 此外,BI 还包括要如何在今后参考您的结果,这样您和其他人就可以在研究数据后,对您所作出的决策的效果进行衡量。 通常来说,BI 是一个反复总结演进的过程。 首先您分析数据以了解发生了什么事情,接着您采取措施以不断推行好的做法,制止不好的做法,然后您再次分析数据以确定您的操作效果如何,以及外部因素会给您的工作带来什么影响。
根据这个宽泛的 BI 定义,即使您只是草草记录信息,或者只是创建一个列表以帮助您做出全天的决策,都是在使用 BI。 通过在用于收集、分析和共享信息的部分或全部业务流程中引入技术,可以使这些流程更加富有效率。 组织在开始时往往是小规模采用 BI 技术,而且通常主要是为了解决特定问题。 经过一段时间后,组织越来越多地使用 BI 技术,并且其重点也转移到如何在整个组织中有效地传播信息上。 随着 BI 战略的不断成熟,组织通常会获得更加复杂的工具,以便能够更好地与数据交互和研究数据。
查询企业数据库有什么问题?
无论在哪个 BI 定义中,数据都始终是焦点。 那么您可能想知道,如果只需查询一个或多个组织的数据库即可获得所需的数据,为什么还要费力创建 BI 解决方案呢? 如果您是正在收集的数据的唯一使用者,如果您具有用于访问企业数据库的工具、技能和安全权限,并且您需要的所有数据都位于这些数据源中,那么您可能不需要正式的 BI 解决方案。 与之相反,如果您经常需要与具备不同技能和安全权限的其他人共享信息,那么您可能需要创建一个可以简单使用和维护的 BI 解决方案。 您还需要考虑一旦您的同事听到这种方便的 BI 解决方案,他们也可能想要使用它。 为了预见这种需求,您的解决方案从一开始就应具备可伸缩性。
表面上看来,让公司中的任何人都可以运行报告,以便从企业数据库中获取数据,这似乎是一个不错的办法,但这种方法可能不会受到数据库管理员的欢迎。 因为他们会告诉您,直接查询企业数据库可能会带来一些问题。 以下是几个常见的问题:
- 如果组织的数据以不同格式存储在不同平台中,那么要将这些数据合并为可用于分析的通用格式是非常困难的。 数据无法从源表直接复制到公共的目标表中,而是需要在存储前执行某些操作。
- 在多个的数据库中,数据定义可能不一致,而协调看起来相似的数据是非常困难的。 例如,销售数据库中的收入数据可能是根据一组业务规则计算的,但它们可能又受到总帐数据库中的一组完全不同的业务规则的影响。
- 每个数据库都可能针对数据插入或执行查询进行了结构化或优化。 即使您只想查询一个数据库,但运行分析查询通常需要汇总大量的数据,而这将消耗较多的数据库资源。 因此,您的查询可能需要执行很长时间,并且可能会与其他执行插入、更新或查询操作的应用程序产生资源争用。
- 历史数据通常存档而非在企业数据库中无限期地维护。 如果您想要查看一段时间内的趋势(这是常见的 BI 活动),您的解决方案可能需要存储不会持续保存在企业数据库中的数据。
- 一些分析所需的数据可能不在企业数据库中。 而可能在平面文件、电子表格或是非结构化数据格式(例如 Word 文档的格式)中。 更大的麻烦在于获取人们存储在其本地计算机或脑海中的信息。
- 即使可以得到数据,有时质量问题也意味着您不能直接从数据源中使用数据。 您可能需要下载数据并对其进行清理,然后才能分析数据。 除非可以在数据源中清理数据,否则您每次访问数据时都需要手动清理,并且还需确保每次都应用相同的规则。 此外,您无法确保所有其他使用相同数据的人都使用相同的规则来清理它。
为了解决这些数据访问的问题,BI 解决方案通常包括创建一个专门用于容纳待分析数据的数据库。 具有这样一个数据库意味着您可以避免生成数据的活动和使用数据的活动之间的任何资源争用。 而且,您可以重构数据,这样汇总数据的查询可以运行得更快。 如果您需要合并来自多个数据源的数据,您可以集中这些数据,然后应用业务逻辑,以将数据转换为具有一致意义的通用格式。 您还可以将不是来自数据库的数据(例如来自 XML 文档或电子表格的数据)合并到此中央位置。 创建单独数据库的另一个好处是在从源数据库中清除数据后,您可以根据需要保留历史数据,无论多长时间。 最后,您可以自动清理和增强用于分析的数据,从而确保每次访问数据时都应用相同的规则。
决策支持
BI 解决方案并非仅仅可以让您更好地访问数据。 它还应具体支持您的决策工作。 总的说来,BI 解决方案应可以帮助您评估和响应业务条件,帮助您确定需要从整个组织的整体角度,还是从部门、工作组或甚至单人团队的局部角度来看待问题。 实际上,能够快速从数据的汇总视图转到详细视图是 BI 的一项重要功能。
BI 解决方案的目标是让您可以分析数据并寻找问题的答案,而不是去跟踪、合并、重新格式化和协调数据本身。 当您有足够的时间来分析数据时,您通常可以在早期发现问题,并采取措施以阻止负面趋势继续发展。 您还可以使用 BI 来发现看似无关的数据点之间的关联,然后根据您的观察调整战略,从而节约资金或获取利润。 无论您是解决问题还是规划将来,您在每天的工作中作出的每个决策都将直接或间接转化为企业的成本或收益。
BI 实战
在理论层次上了解 BI 是很好的,但在实战中使用它则有助于您了解其优点。 为了向您展示 BI 的工作原理,在本系列的其他 3 篇文章中向您介绍了为一个名为 Adventure Works 的虚构公司开发 BI 解决方案的案例。 在本文末尾,我将说明如何获得 Adventure Works 的示例数据库,Adventure Works 是一个虚构的自行车制造商,其产品销往世界各地。 这家公司通过一名销售人员将其产品批发给零售商,例如小型的专业自行车商店或大型的仓储式购物中心。 Adventure Works 还通过 Internet 直接将产品销售给个人消费者。 Adventure Works 数据提供了很多分析的机会,它们非常适合用于 BI 解决方案。
请记住 BI 解决方案的目的在于支持决策。 记住了这点,现在让我们来考虑一下 Adventure Works 在进行关键决策之前需要回答的问题类型:
- 哪种销售渠道更具盈利能力? Adventure Works 必须决定要增加投入雇佣更多销售人员以便与更多销售商展开合作,还是增加其 Internet 销售份额。 为了帮助做出此项决策,分析人员需要比较分销商和 Internet 站点在一段时间之内的销售业绩。 销售人员需要比较的销售业绩数据点(也称为度量值)包括销售额、订单数量和收益率。 收益率的正趋势是最重要的度量值,因为即使销售额和销售数量再高,如果它们产生了净亏损,公司也不会受益。
- 对于某些产品的需求是增加还是减少了呢? Adventure Works 必须根据销售需求来确定生产量。 如果对某些产品的需求增加了,Adventure Works 必须调整其生产流程,以确保提供更多产品并增加销售。 如果对其他产品的需求减少了,Adventure Works 需要减少其生产量,甚至可能需要取消产品线,以避免出现供过于求的状况而不得不亏本出售产品。
即使您的工作不是分析销售数据,我还是建议您跟我们一道为 Adventure Works 建立一个 BI 解决方案。 您可以对您自己的数据应用本系列文章中介绍的设计和开发原则。
Microsoft BI 堆栈
现在让我们深入了解一下 BI 技术的体系结构。 Microsoft BI 堆栈可以提供您用于生成、管理和使用 BI 解决方案所需的全部工具。 SQL Server 2008 是堆栈的基础,它作为数据平台承载着数据集市或数据仓库。 数据集市是一个特定于主题的数据存储。 数据仓库则是一个包含多个主题的企业级数据集合。 数据集市和数据仓库之间的界限是模糊的,但您不必担心这两者的区别。 在本系列文章中,我将使用数据集市这个术语。 (尽管本系列文章专门介绍 SQL Server 2008,但您只需对所提供的说明做出少量修改或不需修改,即可通过 SQL Server 2005 及其 BI 组件构建一个类似的 BI 解决方案。)
SQL Server 2008 包含以下三个 BI 组件:Integration Services (SSIS)、Analysis Services (SSAS) 和 Reporting Services (SSRS)。 这些组件分别为数据平台增加了数据集成功能、多维数据库支持和数据表示层。 图 1 说明了在 BI 解决方案中这些组件之间的相互关系。
![fig01.gif](http://i.technet.microsoft.com/dd776511.fig01a.gif(zh-cn).gif)
图 1 BI 解决方案中的 SQL Server 2008 组件
在设计好数据集市的物理结构之后,您可以利用 SSIS 将您从其他数据源中提取的数据填充到数据集市中。 SSIS 提供了用于自动执行数据清理、合并来自多个数据源的数据以及将数据转为适合于分析的数据结构等过程所需的工具。 您可以制定计划以使用 SQL Server 代理定期执行这些过程。 在 Derek Comingore 文章的 第 31 页,Derek Comingore 介绍了如何制定 BI 解决方案的提取、转换和加载 (ETL) 过程。
将 SSAS 数据库添加到 BI 解决方案中可以支持更复杂的、高性能的交互式查询。 您可以使用 SSAS 将关系数据复制到一个被称为多维数据集的多维数据库结构。 精心设计的多维数据集可以通过在返回的查询结果中添加索引和摘要表等效功能(也称为聚合),获得远远高于关系数据库比较查询的速度,从而优化特殊查询的数据。 您也可以在多维数据集中嵌入复杂的计算逻辑来简化查询,而使用关系数据源时则可能需要复制数百行 Transact-SQL 代码。 很多前端工具(也称为多维数据集浏览器)可让您查询多维数据集而无需编写任何代码。 在下个月的期刊中,Scot Reagin 将向您介绍如何开发一个 BI 解决方案的多维数据集部分。
无论您将数据存储在 SQL Server 数据集市还是 SSAS 多维数据集中,您都可以将 SSRS 添加到解决方案体系结构中,以使用户可以获得数据。 SSRS 是一个报告平台,它提供了多种工具,包括用于开发报告、通过集中管理的基础结构来保护和管理已发布报告,以及用于支持用户访问报告的工具。 您可以使用 SSRS Web 应用程序或 Microsoft Office SharePoint Server 2007 (MOSS) 查看报告,使用订阅功能通过电子邮件接收报告,或是在您自己的应用程序中调用 SSRS Web 服务来显示报告。 默认报告视图以 HTML 格式显示,但您也可以将报告导出为其他文件类型,例如 PDF 或 Excel。 在下个月,我将介绍更多有关在 BI 解决方案的数据表示层中使用 SSRS 的内容。
Microsoft BI 堆栈还包括一些 Office 技术,它们扩展了您的数据表示层选择。 Excel 2007 是一个常见的用于支持 BI 解决方案中的数据分析的选择。 您可以直接从 Excel 访问 SQL Server 数据集市或浏览 SSAS 多维数据集(如图 2 所示),并且可以比查看 SSRS 报告更加随意地浏览数据。
![](http://i.technet.microsoft.com/dd776511.fig02_L(zh-cn).gif)
图 2 使用 Excel 2007 浏览多维数据集
除了使用 Excel 浏览关系和多维数据之外,您还可以使用其数据挖掘算法来发现数据中的信息隐藏模式,或检测数据中的异常(这意味着您可以在填充数据集市之前修复问题)。 要使用数据挖掘功能,一个很好的方法是从 Microsoft 下载免费的 Excel 加载项,然后使用它来分析您从任何数据源中导入到 Excel 的数据,或查看在 SSAS 服务器上创建并存储的数据挖掘模型的输出。 Microsoft 还提供了一个 Visio 2007 加载项,用于共享批注的数据挖掘模型。 有关下载和使用这些加载项的更多信息,请参阅 Office 2007 的数据挖掘加载项。
一种越来越广泛采用的数据共享方式是使用 MOSS 中提供的 Excel Services。 使用 Excel 2007,您首先创建一个工作簿并包含一个数据透视表,它使用 SSAS 多维数据集作为其数据源,然后您将数据连接和您的工作簿发布到 Excel Services。 尽管您可以发布包含其他类型数据源数据的工作簿,但使用 SSAS、数据透视表和 Excel Services 的一个优点是,您可以在纯 HTML 界面中使用与 Excel 相似的多维数据集浏览功能。 另一个优点是可以集中化管理和访问 Excel 工作簿。 有关 Excel Services 的更多信息,请参阅 Excel Services 技术概述。
使用 Excel Services 浏览多维数据集的另一个优点是,您可以使用 Excel Web Access Web 部件将透视表和透视图嵌入到 MOSS 仪表板页面中。 仪表板是一种特殊的 SharePoint 内容类型,您可以使用各种 Web 部件将来自多个来源的数据显示在一个页面中。 您甚至可以将筛选器添加到仪表板页面中,并将其连接到全部或部分 Web 部件,从而可以根据选定的筛选器动态更改页面中的内容。 图 3 显示了一个示例 MOSS 仪表板。 MOSS 还包括另外一个 Web 部件,用于显示 MOSS 服务器中存储的 SSRS 报告(可选 SSRS 配置,也称为集成模式),或者您可以使用随 SSRS 提供的 Web 部件来显示报告服务器中存储的报告(默认配置,也称为本机模式)。
![](http://i.technet.microsoft.com/dd776511.fig03_L(zh-cn).gif)
图 3 使用 MOSS 仪表板页面来显示工作簿和报告
要想获得具有更多功能的仪表板,您可以使用 Microsoft Office PerformancePoint Server 2007 (PPS)。 您可以使用 PPS 记分卡和仪表板,并将它们部署到 MOSS 中。 记分卡是一个报告,它比较实际业绩与预定义的目标,并使用彩色图标显示结果。 您可以使用标准 MOSS 仪表板中的一个特殊 Web 部件来显示 PPS 记分卡,或是将其作为 PPS 仪表板的一部分来显示。 在仪表板中,您可以将 PPS 报告添加到仪表板区域,以显示相同数据的不同视图(如图 4 所示),或显示来自不同数据源的相关数据。
![](http://i.technet.microsoft.com/dd776511.fig04_L(zh-cn).gif)
图 4 使用 PPS 仪表板显示数据
恰如您所看到的,Microsoft BI 堆栈提供了多种用于开发、管理和实现 BI 解决方案的选项,但它并不会阻止您使用其他选项。 Microsoft BI 堆栈是一个彻底可扩展的结构,当您需要支持特定要求时,您完全可以在其中插入您的自定义应用程序或第三方应用程序。
解决方案开发的方法
要想了解 Microsoft BI 堆栈,最好的办法是构建一个简单的解决方案。 在本系列的配套文章中,我们将会向您介绍如何使用 SSIS、SSAS 和 SSRS 构建一个解决方案。 当您阅读完本系列文章后,您将会大体了解每个组件是如何工作的。 但是,不要强迫在您构建的每个 BI 解决方案中都使用堆栈中的每个组件。
当您将 BI 解决方案组合起来,请计划好将大量时间花在数据的准备工作上,例如数据的重构和清理。 在 BI 术语中,这些任务被称为提取、转换和加载 (ETL) 过程。
在开始开发 ETL 之前,您必须仔细规划您的 BI 解决方案设计。 根据我的经验,如果您具有特定的业务问题要解决,并且按照人们与信息交互的方式来进行设计,开发 BI 解决方案会比较顺利。 通过采取以用户为中心的方法,您可以倒推出合适的业务流程,从而设计出可以正确检索和结构化数据以支持您的业务需要的解决方案。 这个建议看似是一个浅显的方法,但我也看到过许多人试图围绕数据来开发解决方案,最后开发出无用的解决方案。
在完成初始的设计后,您就已准备好,可以开始进行开发。 如果您的 BI 解决方案使用 SSIS、SSAS 和 SSRS,您可以首先使用 SSIS 创建并填充 BI 解决方案的数据结构。 数据就位后,您可以继续下一步工作:构建多维数据集。 在开发完成后,您可以处理多维数据集以为其加载数据。 然后,您可以使用 SSRS 开发一个报告,以用于查询多维数据集,并在报告中显示查询结果。 您将本系列的下三篇文章中看到如何逐步完成此过程。 对于您的项目,您应逐步和反复摸索实现此过程,以确保每一个步骤的结果都符合后续步骤的使用。
入门
要完成本系列的其他文章中描述的整个 BI 解决方案,您需要安装 SQL Server 2008,包括 SSIS、SSAS 和 SSRS。 如果您可以在网络上访问 SQL Server、SSAS 服务器和报告服务器,则只需要在您的计算机上安装开发工具。 有关产品安装说明的信息,请参阅如何:安装 SQL Server 2008(设置)。您可以从 CodePlex 下载用于构建 Adventure Works 解决方案的示例数据库。第一个数据库 (AdventureWorks2008) 代表联机事务处理 (OLTP) 数据库,它用于捕获销售、生产和人力资源部门的业务操作所生成的事务。 您将使用此数据库作为您使用 SSIS 构建的数据集市的数据源。 第二个数据库 (AdventureWorksDW2008) 是一个数据示例,代表数据仓库设计的最佳做法。 如果您决定跳过 SSIS 学习,并直接跳转到多维数据集的开发,您可以使用此数据库作为 SSAS 多维数据集的数据源。
后续步骤
在熟悉 SQL Server BI 组件后,您应发现可供用于继续构建您的知识的一个简单的项目。 您不必从成熟的数据集市开始,而应尝试使用本系列的下一篇文章中描述的原则来结构化您的数据。 一旦您开始使用 BI,您将可能永远不会再以相同的方式看待数据。
Stacia Misner 是一名 BI 顾问、教师和作者,同时也是 Data Inspirations 的创始人和负责人。 她具有 25 年的 IT 行业经验,其中有 9 年时间侧重于 Microsoft BI 堆栈。 Stacia 编写过多本有关 BI 和 SQL Server 的书籍。 她的新书 Microsoft SQL Server 2008 Reporting Services 循序渐进(Microsoft 出版社,2009 年)已于今年早些时候发行。 您可以通过 smisner@datainspirations.com 联系她。