【问题标题】:ETL Process in SSIS - Best PracticesSSIS 中的 ETL 流程 - 最佳实践
【发布时间】: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


【解决方案1】:

我的经验法则是,您可以在 TSQL 中执行的任何操作都应该在 TSQL 中而不是在 SSIS 中执行。它将执行得更快。数据流中的查找肯定比 TSQL 中的连接慢。

【讨论】:

  • 我部分同意你的观点,如果你考虑从链接服务器合并脚本而不是使用 SSIS,我会更喜欢 SSIS。连接到链接服务器或从另一台服务器导入数据,我更喜欢使用 SSIS。
  • 是的,我确实假设所有 TSQL 操作都发生在同一台服务器上。如果它们不是同一台服务器,则使用 SSIS。
猜你喜欢
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多