技术开发 频道

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

  开发其他数据包

  我按照创建产品数据包的方式创建客户维度数据包。此处将不重述创建此新数据包应遵循的步骤。请自行尝试创建此数据包。请注意,此数据包使用数据源中的 XML 数据类型列 (Person.Person.Demographics),这需要您解析出单独的人口统计相关属性。要解析 SQL Server XML 数据类型列中的单个值,您可以在 XML 数据类型固有的 Value() 方法中使用 XQuery。请将完成的数据包命名为 DIM_CUSTOMER.dtsx。

  为日期维度开发 SSIS 数据包是可选的。由于此维度通常没有源数据,因此加载它的最简单方法是使用基本的 T-SQL 脚本。您可以在已完成的解决方案中找到我使用的脚本。

  开发 Internet 销售事实表数据包

  Internet 销售事实表数据包查询所有的 Internet 销售,并按照产品、客户和日期(即订单日期)返回销售详情。与维度表数据包不同,事实表数据包在向事实表加载数据前需要一个额外的步骤,即查询相应维度表中的代理键和智能键。您可以创建一个新数据包并将其命名为 FACT_INTERNET_SALES.dtsx。

  此数据包的提取部分需要使用图 4 所示的 T-SQL 代码查询 AdventureWorks2008 OLTP 数据库。

SELECT
       P.ProductID
       ,CONVERT(
INT,CONVERT( CHAR(4), YEAR(H.OrderDate) ) + RIGHT('0'+ CONVERT(VARCHAR(3),
            MONTH(H.OrderDate) ),2) + RIGHT('0'+ CONVERT( VARCHAR(3),
DAY(H.OrderDate) ),2)) AS OrderDateKey
       ,C.AccountNumber
       ,SUM(D.OrderQty)
AS OrderQuantity
       ,SUM(D.LineTotal)
AS SalesAmount
FROM
       [Sales].[SalesOrderDetail] D
INNER
JOIN
       [Sales].[SalesOrderHeader] H
ON (D.SalesOrderID = H.SalesOrderID)
INNER
JOIN
       [Production].[Product] P
ON (D.ProductID = P.ProductID)
INNER
JOIN
       [Sales].[Customer] C
ON (H.CustomerID = C.CustomerID)
WHERE
        H.OnlineOrderFlag
= 1
GROUP BY
        P.ProductID
        ,H.OrderDate
        ,C.AccountNumber

 

  图 4 用于按产品、日期和客户划分的 Internet 销售的 T-SQL 代码

  在此数据包的控制流图面中创建一个新的数据流。打开数据流设计器,创建一个 OLE DB 源组件。将该组件命名为 AW_OLTP,使用图 4 中的查询作为其源。此查询会生成 Adventure Works 销售表中 OrderQuantity 和 SalesAmount 两个度量值的聚合(总和)。

  现在,您需要配置一个查询转换。将查询转换组件的两个新实例从工具箱中拖动到数据流设计器图面,并将其重名为“产品”和“客户”。配置第一个实例(产品),使其查询产品维度表中的 ProductKey。配置方法为将维度表的 AlternateKey 与从 AW_OLTP 源查询传入的 ProductID 字段相联接。

  配置第二个实例(客户),使其查询客户维度表中的 CustomerKey。配置方法为将维度表中的 AlternateKey 与从 AW_OLTP 源查询传入的 AccountNumber 字段相联接。

  最后步骤

  最后一步是将数据加载到 FactInternetSales 事实表,并将每个维度的自然键替换为查询转换找到的代理键。拖放 OLE DB 目标组件的新实例,并将其命名为“AW_DM”。编辑该 OLE DB 目标组件,选择 AW_DM 连接管理器。然后,选择 dbo.FactInternetSales 表并单击“映射”选项卡。确保映射如图 5 所示。单击“确定”完成此数据包逻辑。

开发其他数据包

  图 5 用于 Internet 销售事实表的 OLE DB 目标映射

  要测试 Internet 销售事实数据包,请在 BIDS 中打开此数据包并按 F5。

  现在,您基本了解了维度建模和使用 SSIS 构建按 ETL 设计的数据包。在第三篇系列文章中,您将学习如何使用填充的数据市场创建用于 SSAS 数据库的维度和多维数据集。多维数据集构建完成后,您可以开发一个 SSIS 数据包。这样,每次有新数据添加到数据市场中,您都可以在 SSAS 数据库中持续更新这些对象。当使用单一查询无法满足报告要求时,SSIS 甚至能够准备在 SSRS 报告中显示的数据。如您所见,SSIS 可以做大量工作来帮助您管理 BI 解决方案,而不仅仅是 ETL 处理。

点击查看更多TechNet精彩文章

0
相关文章