如何在 Sql Server Data Tools(集成服务)中订购 ETL 任务?

Posted

技术标签:

【中文标题】如何在 Sql Server Data Tools(集成服务)中订购 ETL 任务?【英文标题】:How to order ETL tasks in Sql Server Data Tools (Integration Services)? 【发布时间】:2016-10-28 23:50:48 【问题描述】:

我是 ETL 处理的新手。我正在尝试通过 ETL 填充数据集市并且遇到了问题。我有 4 个 ETL 任务(每个任务填充 Mart 中的特定表),问题是我需要按特定顺序执行它们,以避免违反外键约束等约束。我怎样才能做到这一点?非常感谢任何帮助。

这是我当前 ETL 的快照:

【问题讨论】:

【参考方案1】:

为您在控制流中填充的每个表创建一个单独的数据流任务,然后按照您需要它们运行的​​顺序将它们简单地连接在一起。您应该能够从您的当前数据流到您创建的新数据流。

控制流中任务之间的连接称为优先约束,如果双击其中一个,您会看到它们为您提供了许多关于如何控制 ETL 包流的选项。不过现在,您可能可以将其保留为默认值 - 这意味着每个数据流任务都将等待前一个任务成功完成。如果一个失败,下一个将无法启动,并且包将失败。

如果您希望一些表并行加载,但之后有一些表等待所有这些都完成,我建议添加一个序列容器并将需要并行加载的表放入其中。然后从序列容器连接到您的下一个数据流任务 - 甚至从一个序列容器连接到另一个。例如,您可能需要一个序列容器来保存所有维度加载过程,然后是另一个序列容器来保存所有事实加载过程。

一种常见的模式比使用单独的数据流任务更进一步。如果为要填充的每个表创建一个单独的包,则可以创建一个父包,并使用执行包任务以正确的顺序调用每个子包。这对于可重用性来说非常棒,并且使您可以在需要时轻松手动填充单个表。当您测试时,它也非常好,因为当您想要测试单个表时,您不需要继续禁用某些任务或重新运行整个负载。我建议尽早采用这种模式,这样您以后就没有太多的返工工作了。

【讨论】:

真的很简短!非常感谢!

以上是关于如何在 Sql Server Data Tools(集成服务)中订购 ETL 任务?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server -- 下载 SQL Server Data Tools (SSDT)

SSDT SQL Server Data Tools 客户特定要求

如何在 Sql Data Tools Visual Studio 2010 中查看 <二进制数据> 内容?

sql server无法修改数据

安装SSDT2017

如何让sqlserver 只返回年和月?