SSIS包装设计

时间:2009-06-16 20:14:03

标签: ssis

设计SSIS包的最佳方法是什么?我正在加载多个维度和事实作为项目的一部分。会不会更好:

  1. 1个数据包和1个数据流,1个数据流中的所有数据提取和加载逻辑?
  2. 有1个包和多个数据流,每个数据流都采用1维逻辑吗?
  3. 每个维度有1个包,然后是一个主包,它们都可以调用它们吗?
  4. 做了一些研究后,2和3似乎是更可行的选择。那里有想分享经验和/或提出替代方案的专家吗?

4 个答案:

答案 0 :(得分:2)

您还可以考虑使用SQL Server代理作业调用多个包。

答案 1 :(得分:2)

Microsoft的Project Real是许多最佳实践的一个很好的例子:

  • 用于维度建模的包设计和配置
  • 包裹记录
  • 分区

它基于SQL 2005,但非常适用于2008.它支持您的选项#3。

答案 2 :(得分:1)

我经常会选择选项3.这是Kimball Microsoft Data Warehouse Toolkit一书中使用的方法,值得一读。

http://www.amazon.co.uk/Microsoft-Data-Warehouse-Toolkit-Intelligence/dp/0471267155/ref=sr_1_1?ie=UTF8&s=books&qid=1245347732&sr=8-1

答案 3 :(得分:0)

我认为答案并不是那么明确......就像DWH经常没有“最佳”设计一样,我认为没有一种“最佳”的包装方法。

这完全取决于维度的数量,相关维度的数量以及暂存区域中的数据结构。

我非常喜欢Project Real(上面提到的)方法,特别是认为包日志记录做得很好。我想我已经读过Denali(SQL 2011)内置的SSIS日志记录/跟踪,但不确定细节。

从调用的角度来看,我会选择一个SQL代理作业,它调用一个主程序包,然后调用所有子程序包并管理它们之间的错误处理/逻辑/电子邮件等,利用日志/错误表来跟踪和管理包流。 SSIS允许SQL代理更复杂的逻辑集(例如,如果所有任务A和B和C都完成而不是任务D,则调用此子包)

此外,我会为每个Snowflaked维度寻找一个包,因为通常从登台数据中,一个源表将生成许多雪花维度(例如DimProduct,DimProductCategory,DimProductSubCategory)。将数据读入数据流任务(DFT)并写入多个表是有意义的。我会为每个维度使用一个容器来分离逻辑。