我正在尝试先做一些SSIS项目/程序包设计,并熟悉Pentaho Data Integration中的ETL。
我正在滚动一些自定义日志记录(以重新使用)。
跨ETL脚本的另一个常见“组件”是旧的“查找要提取的数据范围”。
我想有些人只是说“从今天起带回X个月,然后开始工作”-滚动很快,但可能有些懒惰。我更喜欢一些常见的增量模式,例如“查询上次输入的日期,从那里获取日期”。
无论如何,因此在这些ETL脚本中,我正在创建要重复使用的模块化“子程序包”。无论是记录日志,日期范围查找器,计算脚本等,最终将在20-30个软件包中使用。
我只是想知道-这些子软件包-如果我要重新使用“日期范围查找器”并将其传递给子软件包中的变量“ start_range”和“ end_range”,则这些软件包-可能被各种父母多次调用-可以将其唯一的结果传递给每个调用它的父母,对吗?希望有道理-我想我可以在这里进行测试。我担心最终是否有两个父母会同时打电话给我-我想会发生两个单独的/独立执行的死刑,但谁知道呢。
答案 0 :(得分:1)
“父子”方案是可能的,并在SSIS中得到了广泛使用。
我将此父子打包方案用于复杂的ETL / ELT任务。子程序包执行ETL;父级-编排并运行子级程序包,但自身不执行ETL任务。
在SSIS 2016+中,您可以使用所谓的SSIS软件包部件,它们是插入到Main软件包中的代码片段。再次,有一种破解方法可以从Package Part更改Main Package的变量-在Part中创建一个与Main Package同名的变量,然后-手动将变量范围设置为Main Package。请参阅包装件的more use cases。