我有一个ssis包,它运行在date参数上。如果我们不指定日期,它总是加载昨天的数据。如果我们提供类似于2015-05-10'的特定日期,则应该加载该日期。我们如何动态地实现这一点(使用包配置)?一旦我们加载任何特定日期,应该动态地为昨天的日期设置包。因为我是SSIS的新手,请指导我实现这一目标。
提前致谢
答案 0 :(得分:0)
向包ParamDate
添加参数。必须手动为该参数提供一个值(例如03-21-2015)。如果必须考虑昨天的日期,请将其留空(NULL值)。
现在在包VarDate
有VarDate
这样的表达式 -
ISNULL(@[$Project::ParamDate])?DATEADD("day", -1, getdate()):@[$Project::ParamDate]
我假设你在DFT中加载数据。
因此,在源查询中,您只需在where
子句中添加一个额外条件
SELECT ...... FROM SomeTable WHERE LoadDate = ?
在来源的“参数...”部分中,将变量VarDate
指定给0
。有关如何映射参数的更多详细信息,请参阅here。
希望它有所帮助。
修改强> 由于这是在SSIS 2012下标记的,我的解决方案涉及项目参数,这是项目部署模型下的一项功能。包配置在包部署模型下随时可用。
如果要使用SQL Server包配置表,则可以按照以下步骤操作:
让我们说桌子的名字是SSISConfiguration
让Execute SQL task
从这张表中读取此日期。
SELECT ISNULL(TstampUpdateDate, DATEADD(dd, -1, GETDATE()) FROM SSISConfiguration
此脚本将从TstampUpdateDate
表中获取SSISConfiguration
的值,如果它是NULL
(设置如下),则会返回昨天的日期。
将结果集映射到变量@VarDate
。
在此步骤之后还有一个Execute SQL task
将此字段更新为NULL。
其余步骤与上述步骤相同(从DFT位开始)。
下次运行包时,如果日期字段未更新,它将按照昨天的日期进行查询。