加载昨天日期和特定日期的数据

Load data for yesterday's date and specific date

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

提前致谢

向包 ParamDate 添加参数。此参数必须手动提供一个值(例如 03-21-2015)。如果必须考虑昨天的日期,请将其留空(NULL 值)。

现在在你的包中定义一个变量VarDate

像这样表达 VarDate -

ISNULL(@[$Project::ParamDate])?DATEADD("day", -1, getdate()):@[$Project::ParamDate]

我假设您正在 DFT 中加载数据。

所以在源查询中,你只需要在 where 子句中添加一个额外的条件

SELECT ...... FROM SomeTable WHERE LoadDate = ?

在源代码的 "Parameters..." 部分,将变量 VarDate 分配给 0。有关如何映射参数的更多详细信息,请参阅 here

希望对您有所帮助。

编辑 由于这是在 SSIS 2012 下标记的,我的解决方案涉及项目参数,这是项目部署模型下的一个功能。包配置在包部署模型下。

如果您想使用SQL服务器包配置table,那么您可以按照以下步骤操作:

假设 table 的名字是 SSISConfiguration

  1. 有一个 Execute SQL task 你从这个 table 读取这个日期的地方。

    SELECT ISNULL(TstampUpdateDate, DATEADD(dd, -1, GETDATE()) FROM SSISConfiguration
    

此脚本将从 SSISConfiguration table 获取 TstampUpdateDate 的值,如果它是 NULL(在下面设置),它将 return昨天的日期。

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

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

  3. 其余步骤同上(从DFT位开始)

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