【发布时间】:2018-04-17 11:12:57
【问题描述】:
我正在尝试找出在 SSIS 中构建新 ETL 流程的最佳做法。
我在 sql server 中有一个表源,我想对其进行一些转换、添加列、加入等。
我的问题是,我应该创建一个包含所有转换的 View/SP 还是使用 "Derived Column" 和 "Lookup 进行连接和转换" 在 SSIS 中?
我问的是性能/维护方面的问题。
我认为性能应该是一样的,但它的维护是我最关心的。
感谢您的帮助!
【问题讨论】:
-
这很可能会成为优先事项。我发现 ETL 并没有真正的“最佳”方式。这对您和您的企业有用。对于我目前工作的地方,我发现 ELT 流程效果最好;使用 SSIS 以原始形式提取和加载数据;然后使用 SQL Server 将该数据转换为生产需求。走哪条路完全取决于你。
-
我明白了。所以可以肯定的是,您在 SSIS 中创建 ETL 过程,但在 SQL Server 中执行的数据转换。 SSIS 中的 ETL 调用您创建的 SP?
-
这是一种选择,是的,但是,您可以在数据流中的 SSIS 中进行转换,然后加载。就像我说的,没有“最佳实践”。
-
我不得不同时维护 SSIS ETL 包的两种“风格”。在我看来,将转换保存在 SP 中要容易得多,而且更灵活,而且您可以将所有 SQL 保存在 Visual Studio 数据库项目中,而不是嵌入到 SSIS 中。我还有一些噩梦般的查找转换来处理消耗内存和生产失败的问题,这只能通过删除和重新开发以在数据源中使用 SQL 连接来解决。
-
在这种情况下,我建议您留在数据库中(使用存储过程),因为您已经在表中“加载”了数据。当您有外部资源时,SSIS 变得更加有用。我个人喜欢 ETL 和 ELT(对我来说,交给别人更容易)
标签: sql-server ssis etl