如何在 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 客户特定要求