技术开发 频道

商业智能:为 BI 解决方案构建数据基础

  创建数据映射

  在创建数据市场的物理表之前,我需要进行一些其他规划。具体而言,我需要构建一个数据映射文档,以便将数据市场架构中的每个目标列映射到 Adventure Works OLTP 源系统中的列。源系统就是 AdventureWorks2008 数据库,您可以按照 Stacia Misner 文章第 31 页的内容下载和安装该数据库。您可以使用各种应用程序创建数据映射。与格式相比,更重要的是内容。我习惯在 Microsoft Office Excel 中开发数据映射。图 2 所示为我在数据映射中创建的 DimProduct 选项卡。此外,我还创建了 DimCustomer 和 FactInternetSales 数据映射。工作簿中的每个工作表表示数据市场中的一个表。每个工作表中只有两列:一个源列和一个目标列。

1

  图 2 DimProduct 数据映射选项卡

  每个维度表(日期维度表除外)中都包含名为代理键的主键(通常为标识列)。使用代理键的好处之一是在合并多个系统的数据时不会出现重复键。

  维度表还有一个可选键列。这些可选键表示自然键,有时也称为业务键。自然键用于标识源系统。例如,客户维度中的 CustomerAlternateKey 列映射到 Adventure Works OLTP 数据库中 Sales.Customer 表的 AccountNumber 字段。通过将这些键存储在维度表中,每次对各个维度运行 ETL 过程时,我可以将维度中已有的记录与从数据源中提取的记录进行匹配。

  几乎每个数据市场都包含日期维度,因为业务分析往往按照日期、星期、月份、季度或年份来比较度量值变化。由于日期维度很少从源系统中获取,因此不应使用基于 SQL Server 标识的键。为此,我将改用以 YYYYMMDD 格式存储为 SQL Server 整数列的智能键。智能键是根据逻辑或脚本生成的键,而不是像 SQL Server 中的标识列那样自动递增的键。

  请注意,日期维度通常并不映射到源表。因此,我将使用脚本生成数据,以便将记录加载到表中。

  由于我的小型架构所需的 ETL 过程相当简单,因此这样的数据映射足以满足需要。在实际项目中,我会为数据映射添加注释,指出何时需要进行复杂的转换。

  构建数据市场

  逻辑建模完成之后,现在我需要创建 ETL 过程要加载的物理表及这些表的承载数据库。我将使用基本的 T-SQL 脚本来创建数据库及其关联的维度表和事实表。在(2009 代码下载)的示例 BI 解决方案的相应下载中可以找到完整的 T-SQL 脚本。

  出于本文的需要,我仅构建了整个销售数据市场架构的一个子集,以便在 SSIS 中涵盖整个 ETL 过程。在精简版架构中,我仅加入了 Internet 销售事实表中的 OrderQuantity 和 SalesAmount 两个度量值。此外,在此精简版架构中,我还加入了简化的客户、产品以及日期维度表。

  开发 ETL 过程

  构建 BI 解决方案的下一步是设计和开发 ETL 过程。我们先回顾一下,ETL 包含从数据源提取数据、转换数据然后再将数据加载到目标库的整个技术过程。一般来说,BI 解决方案中的 ETL 过程先从平面文件以及 OLTP 操作数据库中提取数据,然后转换数据使其适应维度模型(例如,星型架构),最后再将结果数据加载到数据市场。  

点击查看更多TechNet精彩文章

0
相关文章