SQL Server 中是否有用于编程 ETL 的标准语言/接口?

kub*_*ubi 10 sql-server etl

我目前正在为我们的数据仓库创建 ETL。我们正在使用 SSIS 2008,但我们遇到了问题,其中最大的问题是重用组件的困难。我们为每个表都有单独的包,每个包都将来自父包的许多变量作为输入。当我们对这些输入变量进行更改时,我们需要进入每个包(我们现在有 15 个左右,但这个数字会显着增加)并修改包以处理这些更改。还有其他问题,包括无法为我们的提取运行任意 SQL,日志记录能力差等。

如果有一种方法可以在代码中开发我们的 ETL,实现代码重用、公共库、更好的单元测试等,那么整个过程会更加健壮。SQL Server是否有事实上的标准 ETL 语言/API?我希望尽可能避免使用 GUI 工具。

编辑:我应该提到我的背景。我不是 DBA,也没有接受过正式(或非正式)的 DBA 培训,我基本上已经了解了这些东西,所以很有可能我正试图用 SSIS 做不适当的事情或接近这个 ETL从错误的角度投射。此外,我目前受雇于州政府,因此任何需要购买新软件包的解决方案都不可能实现。


这是我们的任务之一。我们使用单个 SSIS 包来加载仓库中的每个表。每个 Fact 包和 Dimension 包大体上是一样的,它们只是在

  • 从源数据库中提取
  • 数据流中的操作
  • 合并到目标表

我希望能够做什么(我发现在 SSIS 中很难做到)

  • 从文本文件加载提取查询。当开发人员编写和测试他们的提取查询时,我不应该在 SSIS 运行之前以任何方式操作他们的查询,我不应该将查询剪切并粘贴到 DB 源对象中。
  • 单独测试每个组件。我应该能够独立于其他表负载,独立测试单个表的完整 ETL 过程。
  • 在一处修改共享逻辑,而不必编辑每个单独的包。每个包都以相同的方式将数据加载到审计表中,如果我想更改加载的审计数据,我不想编辑所有 15 个包(随着时间的推移,这个数字会变得更大)。

如果通过正确使用共享代码以编程方式完成,整个过程感觉会更容易实现并且更健壮。

小智 6

有一个工具可以实现这一点 - http://www.varigence.com/products/biml.html

有一个商业版本,但我们还在 BIDS Helper(一个免费工具)中包含了一些 BIML 功能。http://bidshelper.codeplex.com/

我很乐意回答您对此的任何问题。

这是我公司提供的工具。


小智 6

阅读本文后,我立即想到推荐 Varigence 的工具。但是,我看到 Varigence 的首席架构师之一约翰·韦尔奇 (John Welch) 比我先到这里。

Varigence 的工具是 SSIS 之上的一个抽象层。这样做的好处是能够定义可重用的“东西”,从而提供跨多个包的一致性。您可以定义包的结构以及它们在个体基础上的不同之处——来自 Varigence 工具的“编译”输出是 SSIS 包。

将其视为 SSIS 包的动态 SQL。带有图形用户界面。真的很酷。