# 一、微软商业智能栈介绍

在开发任何商业智能(BI)解决方案之前，了解该解决方案的意图或用例、最终用户或分析师希望使用该解决方案得出什么、该解决方案是否将用于动态即席分析或企业报告、最终用户是否更喜欢将报告交付给他们(推送)，或者他们是否喜欢按需浏览报告(拉取)并根据他们的需求更改度量或维度(即席)是非常重要的。

在我们的商业智能解决方案中，分析和报告工具的选择取决于这组问题和其他标准。为了确保我们选择最适合最终用户需求的可用工具，作为商业智能开发人员，了解我们可用的所有工具及其优缺点非常重要。有时一个工具可能无法满足所有的需求，在这种情况下，我们需要使用工具的组合。

在本章中，我将向您介绍微软商业智能栈，以便我们在为最终用户开发商业智能解决方案时，选择最适合用户需求的合适工具。

本书的其余部分深入探讨了开发用于分析的 SQL Server 2012 Analysis Services 表格数据模型以及使用 Power View 进行数据探索和报告，这是在 SQL Server 2012 Microsoft BI (MSBI)栈中引入的新分析和报告工具。

## 什么是商业智能？

商业智能是将数据转换为信息的过程，以便业务决策者或分析师能够更好、更快地做出明智的决策。

尽管商业智能一词在大数据和分析的现代使用得更多，但这个概念对世界来说并不陌生。同样的概念以前被称为执行信息系统，后来被称为决策支持系统。

数据源可以是从平面文件到标准化在线事务处理(OLTP)数据库系统的任何东西，而最终产品是允许最终用户通过对事实进行切片和切割来获得有意义信息的报告。

![](img/image002.png)

图 1:商业智能解决方案

图 1 描述了一个典型的商业智能解决方案的外观以及它所执行的操作。让我们简要检查一下每个组件。

提取-转换-加载

商业智能解决方案的原始数据可能来自不同的数据源，也可能不是关系格式。例如，某些位置数据可能来自 Excel 工作表，而应用程序中的某些度量可能是 CSV 或 XML 格式，无法按原样使用。

ETL 层的工作是从各种数据源中提取数据，并将其转换为规范化的结构化数据，这些数据可以进一步加载到维度模型(数据仓库)中。

如果数据源是结构化的 OLTP 系统，所需的转换是最小的，基本上是提取和加载操作。

随着 PowerPivot、Power Query 和 SSAS 表格模型等新工具的引入，来自数据源的原始数据可以直接加载到多维数据集中，而不需要 ETL 甚至数据仓库层。

数据仓库

商业智能解决方案的数据仓库层通常是一个关系数据库管理系统数据库(随着大数据和 NoSQL 的引入，情况发生了变化)，它是使用维度建模技术(拉尔夫·金博尔方法或比尔·恩门方法)设计的。

在数据仓库层，数据根据其特征被分类为维度或事实。维度提供了对数据进行切片的上下文，而事实是感兴趣的度量。

维度建模技术以及关于维度和事实的详细讨论不在本书的讨论范围之内。

在具有多维数据集的传统数据仓库方法中，使用维度建模技术设计良好的数据仓库非常重要。随着 PowerPivot 和表格立方体的引入，数据不再需要被分类为维度和事实，这使得表格立方体中的数据建模比传统立方体容易得多。

尽管如此，仍然建议使用数据仓库数据库，以适合报告、聚合和多维数据集处理的形式存储数据。

立方

商业智能解决方案提供的信息应允许最终用户跨不同维度以及维度层次结构的不同级别动态划分度量(或事实)。

数据仓库存储维度和事实数据，这允许我们直接从数据仓库本身获取静态报告。然而，DW 可能无法处理通过不同维度或维度层次结构的不同级别进行动态切片和切片的灵活性。

因此，我们有了多维数据集，它虚拟地存储了每个度量、维度层次和维度的聚合数据。

多维数据集是数据模型，它实际上似乎存储了维度层次结构不同级别的预聚合度量数据，从而为最终用户提供了在不同级别动态划分度量的灵活性。

如果商业智能解决方案只需要终端用户直接使用的静态固定报告，而不需要任何动态临时报告，则该解决方案可能不需要多维数据集。

报告

商业智能解决方案的最后一层是报告层，用户可以从报告的数据中获得有意义的信息。

这些报告可以采用仪表板报告的形式，为执行用户显示高度汇总的数据以及关键绩效指标和视觉指标，也可以采用详细报告的形式，根据信息工作者的要求显示发生的每笔交易。

这些报告也可以归类为静态报告，由开发人员从数据仓库中设计和开发，并由最终用户按原样使用。另一方面，动态特别报告通过多维数据集展示给最终用户，允许他们动态地对数据进行切片和切割。

这些报告可能必须通过电子邮件(推送)传递给最终用户，或者用户可以按需浏览报告(推送)。

报告解决方案应该能够满足所有类型的报告需求。

## 了解微软商业智能栈

现在我们已经了解了商业智能的基础知识，接下来我们将深入到微软商业智能栈中，了解哪些产品在不同的层次上可用。

![](img/image003.jpg)

图 2:微软商业智能栈

如上图所示，微软商业智能栈包括以下产品:

SQL Server 集成服务(SSIS)

SSIS 在 MSBI 栈中形成了 ETL 层。SSIS 包接受来自各种数据源(如 Excel、Oracle、SAP 和平面文件)的数据，并将这些数据注入数据流中，在数据流中进行各种可用的转换(例如联合、合并、查找、数据流和执行 SQL 任务)。转换后的数据加载到托管在 SQL 数据库引擎中的数据仓库中。

数据库管理系统

一个 SQL Server 数据库引擎实例构成了在 MSBI 栈中托管数据仓库的平台。

SQL Server 分析服务

SSAS 形成了在 MSBI 栈中托管立方体的平台。在 SQL Server 2008 R2 之前，只有一种类型的 SSAS 实例:多维 SSAS 多维数据集。然而，随着新的 SQL Server 2012 xVelocity 引擎的引入，我们有了新类型的 SSAS 实例:表格数据模型。表格模型是本书的主要焦点。

我们将比较传统的多维 SSAS 模型和表格模型，并在本章的后面讨论如何选择正确的 SSAS 实例。

Microsoft BI 报告平台

借助微软商业智能栈，我们拥有以下报告工具:

![](img/image004.jpg)

图 3:微软商业智能栈中的报告工具

SQL Server 报告服务(SSRS)

SSRS 是商业智能开发人员为最终用户构建固定静态报告的绝佳工具。SSRS 是最灵活的报告平台，拥有大量可视化工具，如仪表、指示器和地图。SSRS 允许将报告导出为各种格式，包括 PDF、Excel、Word 和 HTML。此外，还可以通过订阅文件共享、SharePoint 列表或电子邮件来传递报告。

性能点服务

对于商业智能开发人员来说，PPS 是一个非常好的专门仪表板和记分卡报告工具，可以在 SSAS 立方体上构建动态报告。PPS 报告使用 SSAS 立方体作为数据源，并允许最终用户跨立方体中定义的各种维度动态分割度量。PPS 报告公开了多维数据集中定义的动作、视角等。

擅长

传统上，Excel 为大多数业务用户提供了首选的报告工具。Excel 数据透视表和数据透视表图表可用于浏览多维数据集和执行即席报告。

电源视图

Power View 是在 SQL Server 2012 中引入的新的基于 Silverlight 的即席报告工具。该工具公开了来自 PowerPivot、表格模型和多维数据集的数据模型，从而允许用户动态处理数据。Power View 提供了一套丰富的可视化工具，可以增强业务用户的交互性和体验。

SharePoint 商务智能仪表板

SharePoint 2010 和 2013 提供了一个平台，可以在单个站点上托管前面提到的所有报告工具，允许开发人员构建丰富的仪表板。SharePoint 对于团队 BI 和企业 BI 解决方案非常有用，在这些解决方案中，所有报告都可以连接起来，为最终用户构建一个单一视图仪表板。

本章稍后我们将比较所有微软商业智能报告工具，根据我们的解决方案需求选择合适的工具。

## SQL Server 2012 商业智能栈有什么新功能？

微软凭借其 SQL Server 2012 版本在商业智能领域进行了大量投资，其中一些投资，如商业智能语义模型(BISM)和 Power View，使微软在 Gartner 评估的商业智能和分析平台中处于领先地位。

商业智能语义模型

随着 SQL Server 2012 的推出，微软创造了商业智能语义模型的概念，即 BISM。许多人将这个术语与 SSAS 2012 表格模型互换使用，这是不准确的。让我们试着理解这个新术语的意思。

![](img/image005.jpg)

图 4:商业智能语义模型

如前所述，使用 SQL Server 2012，我们现在可以拥有 SSAS 的两个实例:传统的多维模型和表格模型。从开发人员的角度来看，在多维实例中设计和开发多维数据集与表格模型完全不同，后者相对更容易。没有可用于将多维数据集迁移到表格多维数据集的迁移路径，反之亦然。此外，为多维数据集设计的查询语言是多维表达式(MDX)，而表格模型多维数据集的语言是数据分析表达式(DAX)。每个模型的设计和开发策略完全不同。但是，多维数据集模型可以使用同一组数据源并处理数据。

这些多维数据集引入的关键特性是多维数据集可以支持 DAX 查询(这是在 SQL Server 2012 SP1 CU4 中很晚才引入的)，表格模型多维数据集可以支持 MDX 查询。

这种灵活性允许前面讨论的所有报告工具(Excel、SSRS、PPS、Power View)透明地查询具有类似报告功能的任一类型的多维数据集。例如，使用只生成 MDX 查询的 Excel 数据透视表和图表，我们可以查询多维数据集模型(多维或表格)来构建具有相同功能的相同报表。

从最终用户的角度来看，两种模型都透明地提供了相同的功能。因此，BI 语义模型的这个新概念代表了 SQL Server 2012 中所有报告工具的透明数据模型层。

## 选择合适的微软分析工具

随着 SQL Server 2012 版本的发布，我们现在有了三种分析工具，可用于为 Excel 的 PowerPivot、SharePoint 的 PowerPivot 和 SSAS 的报告设计数据模型。

微软产品团队发布的下图最好地解释了每个分析工具的用例。

![](img/image006.jpg)

图 5:微软分析工具的用途和优势

基于目标受众，商业智能解决方案可以分为个人商业智能、团队商业智能或公司商业智能。

个人商业智能

个人商业智能是针对个人商业用户或超级用户的，他们喜欢为自己的消费和分析创建数据模型、关键绩效指标和衡量标准。PowerPivot 现已与 Excel 2013 原生集成，并作为 Excel 2010 的外接程序提供，迎合个人 BI 用户。

用户可以从各种数据源(SQL Server、Oracle、平面文件、OData 提要等)中获取数据。)并将其加载到 Excel 的 PowerPivot 数据模型中。此外，他们可以在 PowerPivot 数据模型中使用 DAX 公式定义度量、关键绩效指标和派生列，并在 Excel 的数据透视表或数据透视表报表中使用它们。

团队商业智能

团队商业智能适用于喜欢创建、查看和共享数据模型和报告的个人群体。多年来，SharePoint 已经发展成为组织最喜欢的文档库，随着 Office 365 (SharePoint Online)的推出，甚至中小型企业也采用了 SharePoint 作为文档库。微软产品团队设计了 PowerPivot 并将其与 SharePoint 集成，以便可以使用 Excel Services 在线查看 SharePoint 库中上载的 PowerPivot 工作簿。使用 SharePoint 2013，Excel Services 应用程序会本机加载嵌入到 Excel 中的 PowerPivot 工作簿。

SharePoint 的 PowerPivot 能够自动提供预定的数据刷新，这是个人 BI 很难实现的，因此很好地服务于团队 BI 用户。

企业商业智能

企业商业智能也被称为企业商业智能或组织商业智能。它是为拥有大量数据以及对数据、安全性、关键绩效指标和衡量标准的不同需求的大量用户而设计的。SQL Server 分析服务中定义的数据模型专门满足了企业商业智能的需求。

SSAS 提供计算度量、关键绩效指标、视角、基于角色的安全性、Kerberos 集成安全性等功能，并能够处理大量数据。一个实际的案例研究是雅虎用于分析和报告的数据集市。它的大小约为 24 TB，托管在 SSAS 多维数据集上。

随着 SSAS 表格模型在 SQL Server 2012 中的引入，商业智能开发人员可以在传统的多维方法和新的表格模型方法之间进行选择。在下一节中，我们将比较这些方法，以帮助您为您的商业智能解决方案选择合适的模式。

## 多维方法与表格方法

多维方法

![](img/image007.jpg)

图 6:多维数据集方法的流程

设计多维数据集需要使用星型或雪花型模式设计数据集市，其中数据被分类为维度属性或事实。维度表中的数据构成多维数据集中的属性和属性层次结构，而事实表构成度量值组，单个度量值列构成事实。

由于数据集市中的数据需要在星型或雪花型模式中，因此需要一个 SSIS 包来从各种数据源中提取数据，对其进行转换，并将其加载到数据集市中。多维方法需要一个 ETL 解决方案来将数据转换成数据集市中的星型模式。

多维数据集可以开箱即用地处理角色扮演维度、多对多维度和父/子维度，这为我们设计复杂的数据模型提供了极大的灵活性。

多维方法需要 MDX 知识来编写脚本和查询，这对新手来说可能很难，但对于有经验的开发人员来说，这是最灵活的查询语言之一。

多维方法支持三种不同的存储选项:MOLAP、HOLAP 和 ROLAP。MOLAP 是首选选项，因为它以数据冗余为代价来提供最佳性能。

从资源(中央处理器、内存或输入输出)和可伸缩性的角度来看，多维数据集比表格模型消耗的内存少，并且可以通过分区和分区处理很好地扩展。

表格方法

![](img/image008.jpg)

图 7:表格方法的过程

表格方法使用关系建模结构，例如用于建模数据的表和关系，以及用于存储和计算数据的 xVelocity 内存分析引擎。与多维方法不同，表格方法不需要将数据组织成星型或雪花型模式，因为它依赖于数据的压缩柱状存储。这使得使用表格方法进行数据建模变得非常容易。

表格模型可能无法开箱即用地处理复杂的关系(角色扮演维度、多对多维度、父/子维度)，这可能会降低它对复杂数据模型的用处。

表格模型使用 DAX 进行查询和定义计算，与 MDX 相比，相对更容易学习和掌握。

表格模型支持内存中的 xVelocity 模式和 DirectQuery 模式(相当于多维方法中的 ROLAP)。但是，直接查询模式只支持托管在 SQL Server 上的数据集市。它目前不支持任何其他数据源。

从资源消耗的角度来看，表格模型的内存模式是内存密集型的，所需的内存量与数据的基数成正比，因此在内存有限的环境中可能无法很好地扩展。在某些情况下，表格模型可能比多维模型表现更好，这取决于数据。

抉择矩阵

下图概述了开发人员在多维方法和表格方法之间进行选择的决策矩阵。

![](img/image009.jpg)

图 8:选择多维或表格模型

## 选择合适的微软商业智能报告工具

![](img/image010.jpg)

图 9:微软商业智能栈中的报告工具

性能点服务记分卡和仪表板

*   交互性:记分卡和仪表板允许深入查看和穿透查看功能，允许用户执行特别报告和分析。
*   可视化:与其他工具相比，可用的可视化和图表有限。
*   自助 BI:用户可能无法自行开发仪表盘。
*   导出到 Excel 或其他格式:导出到 Excel 是可能的，但其他格式是不可能的。
*   电子邮件订阅:用户可能无法通过开箱即用的电子邮件订阅接收报告。

总的来说，PPS 是一个很好的仪表板和分析工具，但它不支持自助商业智能。

SQL Server 报告服务

*   交互性:SSRS 仪表盘允许深入和穿透钻取，但不支持动态切片和切割。SSRS 主要用于交互性和临时功能有限的静态报告。
*   可视化:提供丰富的可视化集，包括地图、仪表、迷你图等。
*   自助 BI:用户可能无法自行开发仪表盘。
*   导出到 Excel 和其他格式:可以导出到 Excel 和其他格式，如 PDF、Word 和 HTML。
*   电子邮件订阅:用户可以创建电子邮件订阅，将报告发送到他们的邮箱。

总的来说，对于静态报告，SSRS 是一个很好的报告工具，但对于即席分析和自助商业智能可能没有用处。

电源视图

*   交互性:Power View 仪表板允许动态切片，这使得它成为一个高度交互的分析和仪表板工具。它是特别报告的首选工具。
*   可视化:包括一组丰富的可视化，如地图、散点图、卡片、瓷砖等。
*   自助 BI:用户应该能够自己开发仪表盘。
*   导出到 Excel 和其他格式:可以导出到 PowerPoint，但不支持其他格式。
*   电子邮件订阅:用户可能无法创建将报告发送到其收件箱的电子邮件订阅。

总的来说，Power View 是自助商业智能和即席分析的好工具，用户可以动态地对信息进行切片和切割，但它不支持将数据导出为 PowerPoint 以外的格式。

excel 仪表板

*   交互性:通过 Excel Services 在 SharePoint 中的 Excel 仪表板提供有限的交互性，不支持穿透钻取操作。但是，从 SharePoint 下载的 Excel 工作簿支持钻取。
*   可视化:提供一组有限的可视化，包括表格和图表。
*   自助 BI:用户应该能够自己开发仪表盘。
*   导出到 Excel 等格式:导出到 Excel 是可以的。
*   电子邮件订阅:用户可能无法创建电子邮件订阅来将报告即时发送到他们的收件箱。

总的来说，Excel 仪表板是 Excel 用户自助 BI 和分析的好工具，但与其他工具相比，交互性有限。

抉择矩阵

下图概述了开发人员为其商业智能解决方案选择报告工具的决策矩阵。

![](img/image011.jpg)

图 10:选择正确的报告工具

## 开发 MSBI 解决方案

下图概述了开发 MSBI 解决方案所涉及的步骤:

![](img/image012.png)

图 11:开发 MSBI 解决方案的过程

像任何软件开发生命周期一样，开发的第一步是需求收集阶段。在这里，我们从我们的客户或最终用户中梳理出他们希望根据哪些维度或属性来分析哪些度量，以及他们是否需要即席报告功能或需要开发人员创建的静态报告。

一旦我们确定了要求，下一步就是根据所需的交互性、可视化、自助 BI、导出到 Excel 或其他格式以及电子邮件传递，选择最适合最终用户需求的微软报告工具。对于不同的用户需求，我们可能希望选择报告工具的组合。

下一步是选择正确的微软分析工具(PowerPivot、SharePoint 上的 PowerPivot、SSAS 多维或 SSAS 表格)。根据个人商业智能、团队商业智能或公司商业智能的要求，我们可以选择最适合最终用户需求的分析工具。对于企业 BI 解决方案，我们可以根据数据模型的复杂性、可扩展性、技能集知识、客户端工具等，在 SSAS 多维模型或表格模型之间进行选择。

团队商业智能或公司商业智能场景需要数据仓库。如果需要数据仓库(这是首选)，下一步是使用 Ralph Kimball 给出的维度建模技术设计数据仓库模式。数据仓库可能包含多个数据集市，每个数据集市都是为给定的业务流程定义的。数据集市由一个星型模式组成，中心事实表被具有主外键关系的维度表包围。事实表由要分析的关键列和度量组成，而维度表由需要分析度量的相关属性集组成。

一旦数据仓库模式准备就绪，接下来我们需要确定数据仓库的数据源，因为数据仓库将由组织中的各种数据源填充。一些数据可能驻留在 OLTP 中，一些可能在平面文件中可用，而另一些可能在云中可用。

一旦确定了仓库的数据源，下一步就是设计一个 ETL 解决方案，从不同的数据源中提取数据，如果需要的话对它们进行转换，并将其加载到数据仓库中。在这一步中，我们可能必须设计一个临时的临时数据库，在那里我们首先提取、加载和转换数据，然后再将其加载到数据仓库中。

在 ETL 开始流动之后，数据仓库会以适合报告的格式填充数据。对于像 SSRS 这样的一些报表工具，我们可以直接设计报表，从数据仓库中获取数据；但是，如果用户正在寻找自助 BI 和即席报告，则需要进行多维数据集数据模型设计。我们可以基于前面选择的分析工具来设计数据模型。

商业智能解决方案开发的最后一步是通过之前确定的报告工具，根据最终用户的需求设计报告，这将允许用户获得有意义的信息并做出明智的决策。

## 总结

在本章中，我们介绍了商业智能的基础知识、微软商业智能栈中可用的各种工具，以及如何为您的商业智能解决方案选择合适的工具。

在下一章中，我们将从使用 SQL Server 2012 中引入的 SSAS 表格模型的数据建模开始，这将是本书其余部分的重点。