【IT168 技术文档】大多数数据库管理员 (DBA) 在管理其组织的数据和 Microsoft SQL Server 实现时都遇到了某种形式的商业智能 (BI)。许多其他不具有 DBA 职责的 IT 专业人员可能听说过 BI,但并未切身体验过 BI,甚至完全不清楚什么是 BI。在本文中,您将了解到究竟什么是 BI。一旦您了解 BI 技术的真正用途以及如何在 Microsoft BI 平台上构造 BI 解决方案,您就会知道为什么 BI 不仅仅适用于 DBA。如果您了解 BI,就能够在您组织的 BI 计划出现(这些计划将出现)时更好地支持这些计划,并且您将了解如何使用 BI 来跟踪和分析与您的角色相关的数据,从而使您的工作更加轻松,并加深对这些数据的理解。
本文是一系列介绍 Microsoft BI 堆栈的文章的第一篇。在这篇文章中,我定义了 BI 并简要描述了 BI 解决方案的高级体系结构。我还讲解了构建 BI 解决方案的过程。若要深入了解本文中提到的 SQL Server BI 技术,您可以阅读本期杂志中由 Derek Comingore 编写的随附文章(请见“为 BI 解决方案构建数据基础”)和下期杂志中由 Scot Reagin 和我编写的随附文章。
什么是 BI?
几年前,在我和别人合著 Business Intelligence:Making Better Decisions Faster(《商业智能:更快地做出更好的决策》,Microsoft Press,2002)时,我的同行就哪些技术应归入 BI 的范畴并纳入本书覆盖范围这个问题的意见很不统一,我对此十分惊讶。听到 BI 专业人员就哪些工具是 BI 工具,哪些工具不是 BI 工具发表了不同的意见使我受到了启发。IT 行业中仍存在着这样的观念差异,并且很多人还在继续争论 BI 的定义。在我看来,BI 既与业务流程有关,也与技术有关,因此我将从这个角度来开始定义 BI。
作为一个业务流程,BI 是您为收集和分析数据而执行的一系列活动,您可以通过与他人共享分析结果来做出更好的决策并增强您的业务。无论您是需要信息以决定如何使日常工作更高效还是需要为长期规划(如下一年的预算)提供支持,您用来查找、传输、格式化和研究数据的步骤都是 BI 的一部分。此外,BI 还包括用于使结果可供日后参考的过程,这样您和其他人便能够在研究这些数据后估计您的决策所产生的影响。一般来说,BI 是一个迭代过程。您可以分析数据来了解发生的事情,可以采取措施来确保始终发生好的事情并避免发生坏的事情,然后可以分析数据来确定您的措施是让事情变得更好还是更差了,以及外部因素是帮助还是阻碍了您的工作。
由于 BI 具有如此广泛的定义,您每天甚至在记下少量信息或创建列表来帮助您做出决策时也会用到 BI。通过将技术引入到您用来收集、分析和共享信息的部分或所有业务流程中,可以让这些流程更高效。在采用 BI 技术时,旨在从小处着手的组织通常会先使用该技术来解决特定问题。随着时间的推移,组织会将重心转变为在整个组织中发布信息,从而使 BI 技术的使用范围逐渐扩大。随着其 BI 策略的日趋成熟,组织通常会获得更复杂的工具,以便能更好地与数据进行交互并更深入地研究数据。
查询您的公司数据库时出现了什么问题?
在 BI 的任何定义中,数据始终是重点。您可能想知道,在您只需查询组织的一个或多个数据库便能获得所需数据时,为何还要费心创建 BI 解决方案?在以下情况下,您可能不需要正式的 BI 解决方案:您是您正在收集的数据的唯一使用者,您有访问公司数据库的工具、技能和安全权限,您需要的所有数据都在这些源中。相比之下,如果您需要定期与技术技能和安全权限有所不同的其他人共享信息,则需要创建一个易于使用和维护的 BI 解决方案。您还需要考虑的是,当您的同事获悉这个灵巧的 BI 解决方案后,他们也会想使用它。为了满足这个预期需求,您的解决方案应一开始就是可扩展的。
从表面上看,允许公司内部的每个人通过运行报告来从企业数据库获取数据可能看起来是个好主意,但这个方法将不会在 DBA 中广受欢迎。他们会告诉您,直接查询企业数据库可能会引发一些问题。以下是几个更常见的问题:
· 如果组织的数据以不同格式存储在各个平台上,则将这些数据整合成一类对分析很有用的常见格式可能是一大难题。无法将数据从源表直接复制到常见目标表中,而必须在存储数据之前以某种方式操作数据。
· 数据定义在多个数据库之间可能是不一致的,并且难以协调看起来类似的数据。例如,可以按照一组业务规则来计算销售数据库中的收益,但会受到总帐数据库中的一组完全不同的业务规则的约束。
· 可能已为每个数据库创建了结构并进行了优化,以便插入数据或执行查询。即使您只需要查询一个数据库,运行分析查询通常也需要汇总大量数据,这是一项需要耗费大量数据库资源的操作。因此,查询的执行时间可能较长,并会与执行插入、更新或查询操作的其他应用程序争用资源。
· 历史数据通常在企业数据库中存档而不是无限期地维护。如果您需要查看随时间变化的趋势(一个常见的 BI 活动),您的解决方案可能必须成为一个不在企业数据库中保存的数据的存储库。
· 企业数据库可能没有分析所需的某些数据。这些数据可能以平面文件、电子表格或非结构化数据格式(如 Microsoft Word 文档)的形式存在。获取用户存储在其本地计算机或大脑中的信息会更加棘手。
· 即使数据可用,质量问题有时也意味着您无法从源直接使用它。您可能需要下载数据并对其进行清理,然后才能分析数据。除非可以在源中清理数据,否则每当您访问数据时都需要手动清理它 - 确保您每次都应用相同的规则。此外,您无法确保使用相同数据的其他人都会应用相同规则来清理数据。
为了解决与数据访问相关的这些问题,BI 解决方案通常会包含一个为保存用于分析的数据而专门创建的数据库。拥有这样一个数据库就意味着您可以避免在生成数据的活动和使用数据的活动之间出现任何资源争用问题。进一步来说,您可以重构数据,使汇总数据的查询能更快地运行。当您需要合并不同数据源中的数据时,您可以对这些数据进行集中管理,并应用业务逻辑以将这些数据设为含义一致的常见格式。您也可以将来自数据库之外的其他源(如 XML 文档或电子表格)的数据合并到此中心位置。创建单独的数据库的另一个好处是,您可以在从源数据库中清除历史数据后根据需要保留历史数据。最后,您可以自动执行清理和增强数据的过程以便分析,从而确保每次访问数据时都应用相同的规则。
针对决策制定的支持
BI 解决方案不应仅限于帮助您更好地访问数据,还应专门支持您的决策制定工作。一般而言,BI 解决方案应帮助您评估并响应业务条件,无论您是需要有关整个组织的全面数据还是需要某个部门、工作组或单人团队的局部数据。实际上,从数据的汇总视图快速移动到数据的详细视图这一能力是 BI 中的一项重要功能。
BI 解决方案旨在让您将时间花在分析数据并寻求问题的答案上,而不是花在跟踪、合并、重新格式化和协调数据本身上。当您有充足的时间来分析数据时,您通常可以尽早发现问题并采取措施来遏制消极趋势。您还可以使用 BI 来发现看上去不相关的数据点之间的关联,然后改变策略以详细分析节省的资金或收益。您每天在工作时所做的每个决策(无论您是要解决问题还是要为将来做规划)都会直接或间接地转换为公司的成本或收益。
运行中的 BI
从理论上理解 BI 已经很好了,而查看运行中的 BI 可以真正帮助您了解它的好处。为了向您说明 BI 的工作原理,本系列文章中的其他三篇文章描述了为一家名为 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 解决方案中各个组件之间的关系。
图 1 BI 解决方案中的 SQL Server 2008 组件
在您设计数据市场的物理结构后,可以使用 SSIS 向其中填入从其他数据源提取的数据。SSIS 提供了自动执行以下过程所必需的工具:清理数据、合并来自多个源的数据以及将数据转换为适合分析的结构。您可以使用 SQL Server 代理来安排定期执行这些过程。Derek Comingore 在其有关 SSIS 的文章中的第 31 页中,说明了如何为 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 堆栈还包含几项 Microsoft Office 技术,这些技术可增加针对数据表示层的选项数。对于支持 BI 解决方案中的数据分析,Excel 2007 是一个常见选择。您可以访问 SQL Server 数据市场或直接从 Excel 浏览 SSAS 多维数据集(如图 2 中所示),并可以比在查看 SSRS 报告时更自由地浏览数据。
图 2 使用 Excel 2007 浏览多维数据集
除了使用 Excel 来浏览关系数据和多维数据之外,还可以使用其数据挖掘算法从您的数据中找出隐藏的信息模式或检测数据中的异常情况(这意味着您可以在填充数据市场之前纠正问题)。开始进行数据挖掘的一个好方法是,从 Microsoft 下载一个免费的 Excel 加载项,然后用它来分析从任何源导入到 Excel 中的数据或查看在 SSAS 服务器上创建和存储的数据挖掘模型的输出。Visio 2007 的加载项也可用于共享批注数据挖掘模型。可以在“Office 2007 的数据挖掘加载项”中了解有关下载和使用这些加载项的更多信息。
对于共享数据,一个日趋流行的选择是 MOSS 中提供的 Excel Services。通过使用 Excel 2007,您可以先创建一个工作簿(其中包含将 SSAS 多维数据集用作其数据源的数据透视表),然后将数据连接和工作簿发布到 Excel Services。尽管您可以发布包含来自其他类型数据源的数据的工作簿,但将 SSAS、数据透视表和 Excel Services 一起有很多好处,其中包括可以在保留了 Excel 的熟悉风格的纯 HTML 界面中使用大部分相同的多维数据集浏览功能。另一个好处是,可以实现 Excel 工作簿的集中管理和访问。有关 Excel Services 的更多信息,请参阅“Excel Services 技术概述”。
对多维数据集浏览使用 Excel Services 的另一个好处是,可以使用 Excel Web Access Web 部件将数据透视表和数据透视图嵌入 MOSS 仪表板页中。仪表板是一个特殊的 SharePoint 内容类型,它允许您使用各种 Web 部件在一个页面上呈现来自多个源的数据。您甚至可以将一个筛选器添加到仪表板页,并将该筛选器连接到部分或所有 Web 部件以便根据所选的筛选器动态更改页面上的内容。图 3 显示了一个示例 MOSS 仪表板。MOSS 还包括一个用来显示存储在 MOSS 服务器上的 SSRS 报告的 Web 部件(一个称作集成模式的可选 SSRS 配置),或者您可以使用 SSRS 附带的 Web 部件来显示存储在报告服务器上的报告(称作本机模式的默认配置)。
图 3 使用 MOSS 仪表板页显示工作簿和报告
对于具有更多功能的仪表板,可以使用 Microsoft Office PerformancePoint Server 2007 (PPS)。可以使用 PPS 来开发可部署到 MOSS 的记分卡和仪表板。记分卡是一个报表,它会将实际性能与定义的目标进行比较并用彩色编码图标显示结果。可以使用特定类型的 Web 部件在标准 MOSS 仪表板中显示 PPS 记分卡或将其显示为 PPS 仪表板的一部分。在仪表板中,可以将 PPS 报告添加到仪表板区域来显示同一数据的不同视图(如图 4 中所示)或显示来自不同源的相关数据。
图 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,您就可能永远不会再用同样的方法来查看数据了。