我目前正在为我们的数据仓库创建ETL。我们正在使用SSIS 2008,但是我们遇到了问题,其中最大的就是难以重用组件。每个表都有单独的程序包,每个程序包都将父程序包中的多个变量作为输入。当我们对这些输入变量进行更改时,我们需要进入每个程序包(现在有15个左右,但是这个数字将大大增加)并修改程序包以应对这些更改。还有其他问题,包括无法为我们的提取运行任意SQL,不良的日志记录功能等。
如果有一种方法可以开发代码中的ETL,实现代码重用,通用库,更好的单元测试等,那么整个过程将更加健壮。是否存在用于SQL Server的事实上的标准ETL语言/ API?我希望尽可能避免使用GUI工具。
编辑:我应该提到我的背景。我不是DBA,也没有正式(或非正式)的DBA培训,随着我的发展,我基本上已经了解了这些内容,因此,我很可能尝试使用SSIS进行不合适的工作或尝试使用此ETL。从错误的角度投射。另外,我目前在州政府工作,所以任何需要购买新软件包的解决方案都不在可能范围之内。
这是我们的任务之一。我们正在使用一个SSIS包来加载仓库中的每个表。每个Fact程序包和Dimension程序包通常都相同,只是它们的区别在于
- 从源数据库中提取
- 数据流中的操作
- 合并到目标表
我想做的(我发现在SSIS中很难做)
- 从文本文件加载提取查询。当开发人员编写和测试其提取查询时,我不必在SSIS运行它之前以任何方式操纵他们的查询,也不必将查询剪切并粘贴到DB Source对象中。
- 分别测试每个组件。我应该能够独立地测试单个表的完整ETL过程,而与其他表负载无关。
- 在一处修改共享逻辑,而不必编辑每个单独的程序包。每个包都以相同的方式将数据加载到审核表中,如果我想更改已加载已审核的数据,则不需要编辑所有15个包(随着时间的推移,这个数量会变得更大)。
如果适当地使用共享代码以编程方式完成,则整个过程感觉将更容易实现,并且更加健壮。