0

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

这是我当前 ETL 的快照: 这是我当前 ETL 的快照

4

1 回答 1

1

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

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

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

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

于 2016-11-02T11:03:40.520 回答