【IT168 技术文档】数据在任何商业智能 (BI) 解决方案中都是最重要的部分。正如 Stacia Misner 在“规划您的首个 Microsoft BI 解决方案”中所说,收集和维护 BI 解决方案数据涉及几个步骤。BI 专业人员称这些步骤为提取、转换和加载 (ETL) 过程。即使您不准备将 BI 作为自己的工作重心,您仍可以利用 ETL 方法和工具来管理日常工作中进行决策所需的数据。在本文中,我将向您介绍如何设计和构建一个简单的数据市场,从而演示如何使用 SQL Server 2008 Integration Services (SSIS) 对您自己的 BI 解决方案执行 ETL。
了解要求
和所有 IT 项目一样,开始 ETL 项目的非常好的做法是了解您希望构建的 BI 解决方案的总体要求,然后再决定怎样利用数据才能最好地满足这些要求。第一篇系列文章提供了 BI 解决方案的案例背景。在案例中需要 BI 解决方案的是虚拟公司 Adventure Works。文章通过叙述该公司要回答的几个问题列出了分析要求。从这些问题中可以明显看出 Adventure Works 需要从以下不同角度了解其产品销售:不同分销渠道(经销商或 Internet)的收益率、产品需求随时间推移发生的变化以及按产品、销售人员、地理区域和经销商类型统计的实际销售额与预测销售额之间的差异。回答这些问题有助于 Adventure Works 决定将重点放在哪个分销渠道才能增加利润、如何调整生产流程才能最好地满足需求、如何改变销售战略才能帮助该公司实现销售目标。将 SQL Server Reporting Services (SSRS) 添加到 BI 解决方案后,您就能看出数据是如何帮助回答这些商业问题的。
在按照这些要求开始为 Adventure Works 设计数据市场之前,我希望从商业角度建立信息需求模型。换言之,设计数据市场的依据是用户如何提问,而不是从数据源获取数据的方式。
本文中的代码示例需要 SQL Server 2008 Adventure Works OLTP 示例数据库。代码下载位置:SampleCode2009_08.exe (151 KB)
使用维度模型
构建数据市场通常要使用维度模型设计。维度模型设计是非常适合用于分析的数据库架构。(kimballgroup.com 是了解维度模型的一个非常好的资源。)维度模型以用户熟悉的方式呈现数据,而且能够帮助您构建适合查询大量数据的优化数据结构。您可以通过对数据进行去规范化实现这种优化。去规范化能够使数据库引擎在查询时快速选择并高效聚合大量数据。我将在 Adventure Works 解决方案的去规范化架构中设定两种类型的表:维度表和事实表。维度表存储经销商或产品等有关业务实体和对象的信息。事实表用来存储需要聚合的销售额数值,表中包含将事实表与维度表关联起来的度量值和键。稍后我将在下文中详细介绍事实表。
可以采用两种架构实现维度模型表:星型架构和雪花型架构。简单说来,星型架构中每种维度使用一个表,因此每个查询与事实表之间都是单一联接的。雪花型架构中每种维度使用两个或多个表,因此查询中需要更多联接才能查看所有数据。这种级联联接的集合意味着雪花型架构的查询速度通常要比星型架构的查询速度慢。出于本文的需要,为了简化设计,我将使用星型架构。
创建总线矩阵
Adventure Works 的 BI 解决方案中的重点是与销售相关的维度。为了确定与销售相关的维度,我要创建一个总线矩阵,这是维度建模过程中的一个步骤。Adventure Works 有两种销售渠道:向经销商批发和通过 Internet 零售。我还使用总线矩阵来确定每个维度与以上两种类型的销售渠道或其中一种的关系。图 1 所示为我的 Adventure Works 销售总线矩阵示例。
图 1 Adventure Works 销售总线矩阵
下一步是确定解决方案的度量值。度量值是进行分析所需的数值。这些数值可以直接取自销售额或产品成本等数据源,也可以经过计算得出,如将某一数量乘以一定的金额得到扩展销售额。此外,还需要确定在每个维度中应包含哪些属性。属性是维度中的单个元素(对应于表中的列),如销售区域维度中的国家/地区或日期维度中的年份。您可以根据分析需要使用属性对数据进行分组或筛选。本文不会对所有标识的度量值或维度属性进行详细介绍,但您需要注意有必要执行标识过程。