加载昨天的日期和具体日期

时间:2015-06-01 05:49:34

标签: ssis ssis-2012

我有一个ssis包,它运行在date参数上。如果我们不指定日期,它总是加载昨天的数据。如果我们提供类似于2015-05-10'的特定日期,则应该加载该日期。我们如何动态地实现这一点(使用包配置)?一旦我们加载任何特定日期,应该动态地为昨天的日期设置包。因为我是SSIS的新手,请指导我实现这一目标。

提前致谢

1 个答案:

答案 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

  1. Execute SQL task从这张表中读取此日期。

    SELECT ISNULL(TstampUpdateDate, DATEADD(dd, -1, GETDATE()) FROM SSISConfiguration
    
  2. 此脚本将从TstampUpdateDate表中获取SSISConfiguration的值,如果它是NULL(设置如下),则会返回昨天的日期。

    1. 将结果集映射到变量@VarDate

    2. 在此步骤之后还有一个Execute SQL task将此字段更新为NULL。

    3. 其余步骤与上述步骤相同(从DFT位开始)。

    4. 下次运行包时,如果日期字段未更新,它将按照昨天的日期进行查询。