请联系我们

Project REAL分析服务技术探讨

来源: 数据库 SQL Server |  作者: landluo |  发布: 2009-7-08 10:09


附录A:自动的分割表创建

Project REAL设计应用了大量的分割。产品系统中有超过220个极大的分割表。范例数据使用了125个以上的分割表,每个表中都只有几万条数据。完整的产品系统在每个分割表中大概会有1.8亿-2.0亿条记录。因为如此多的分割表,每当我们生成一个新的模式时,我们都需要创建一个新的分割表。

因此,就如同谚语所说,“当过程变的基本一致的时候,程序员就需要编写程序了”。

这个附录详细描述了一个SQL Server 2005 Integration Services中的BuildASPartition程序包,这个程序包是为在SQL Server 2005分析服务数据库中自动构建分析服务度量组分割表中而创建的。这个程序包能够同步关系型分割表模式和分析服务(Analysis Services )度量组分割表模式。它循环不断的检查关系型数据库,查找每周生成的实际分割表(通过使用一个表名称转换)。如果找到一个关系型表,它会检查在分析服务度量组中是否存在这个分割表(使用同样的表名称转换)。如果不存在,它会构建一个XMLA脚本,并执行这个脚本,最后生成一个分割表。

图26描述了这个程序包的结构。

图27描述了它们的变量以及默认值

图27:BuildASPartition程序包中的变量列表

下表列举了每个变量并解释了如何使用。

变量

角色

Mask

一个用来标识实际表分割表的TSQL LIKE片断。按周的分割表可以的值可以是‘vTbl_Fact_%_WE_%’。

注意:LIKE子句中的%符合是一个代表任意字符的通配符,例如:

vTbl_Fact_Store_Sales_WE_2004_11_27

vTbl_Fact_Store_Inventory_WE_2004_07_10

vTbl_Fact_DC_Inventory_WE_2005_01_08

Table

包含一个表记录,作为“ForEach Partition”任务中 Loop的循环变量,遍历一个包含表的行集。

Tables

一个行集,包含了RDBMS连接的数据库中匹配了Mask变量的数据表。

XMLA_Script

一个由Partition Already Present?任务生成的XML脚本

IsNotPresent

一个由Partition Already Present?任务设置的布尔值。如果分割表已经存在,这个值是True,然后执行DDL任务;如果是False,则ForEach Partition检查另外一个表,重复这个过程。

程序包包含以下四个任务。

◆Get Partition List (一个Execute SQL任务)

这个任务将使用一个Mask变量,将它作为Transact-SQL LIKE 模式匹配,去查询在RDBMS数据库连接中定义的视图。执行的输出结果(行集)将绑定到Tables变量上。图28表示了如何在程序包编辑器中配置Get Partition List任务。

图28:Get Partition List任务属性

◆ForEach Partition (一个For Each Loop 任务)

这个任务将遍历所有的表,每遍历到行集中一个新的元素时,它将把表的名称赋给Table变量。图29表示如何在程序包编辑器中配置ForEach任务。

图29:ForEach任务属性

共20页: 18 下一页

【内容导航】

原文:Project REAL分析服务技术探讨(18)


* 部分内容来源于网络,版权属原作者所有,转载请注明来源。
打印 | 收藏此页 |  推荐给好友 | 举报