更新ssis工作流程中的日期
Updating a date in a work flow of ssis
最重要的是,我是 SSIS 的新手,我需要帮助解决这个问题。
我得到了下一个工作流程,一切正常,直到我收到与源中的日期相关的错误。错误是这样的:某些日期的年份类似于 0001(oracle 源),但这不被 sql 服务器接受(我无法更改数据库中为该字段建立的类型)。我有下一个工作流程,我在其中重定向此错误(图片 1):
现在,我需要做这样的事情:
如果日期 < '1900-01-01'
然后日期 = '1900-01-01'
所以,我想到了如图 2 中那样的解决方案,使用派生列。但是我不知道如何在 SSIS 中表达 if 条件,如果这是处理这个问题的最佳方法,甚至更好。
此致
Integration Services Expression Reference
SSIS 表达式语言最接近 if
的是三元运算符 condition?true:false
Condition
是导致布尔值 true/false 的任何值。你的情况 [date] < (DT_DATE)"1900-01-01"
在这里,我将字符串日期 1900-01-01 转换为强类型,以便与我的 "date" 字段进行比较。您希望将该类型与数据流中表示的内容对齐,例如:DT_DATE、DT_DBTIMESTAMP 等
true
是条件为真时的值。您 运行 面临的挑战之一是保持数据类型的一致性。与上面相同的注意事项,但您可能需要 (DT_DATE)"1900-01-01"
false
见上文,但条件为假。这更容易,因为不需要类型转换。 [date]
因此
([date] < (DT_DATE)"1900-01-01") ? (DT_DATE)"1900-01-01" : [date]
最重要的是,我是 SSIS 的新手,我需要帮助解决这个问题。
我得到了下一个工作流程,一切正常,直到我收到与源中的日期相关的错误。错误是这样的:某些日期的年份类似于 0001(oracle 源),但这不被 sql 服务器接受(我无法更改数据库中为该字段建立的类型)。我有下一个工作流程,我在其中重定向此错误(图片 1):
现在,我需要做这样的事情:
如果日期 < '1900-01-01' 然后日期 = '1900-01-01'
所以,我想到了如图 2 中那样的解决方案,使用派生列。但是我不知道如何在 SSIS 中表达 if 条件,如果这是处理这个问题的最佳方法,甚至更好。
此致
Integration Services Expression Reference
SSIS 表达式语言最接近 if
的是三元运算符 condition?true:false
Condition
是导致布尔值 true/false 的任何值。你的情况 [date] < (DT_DATE)"1900-01-01"
在这里,我将字符串日期 1900-01-01 转换为强类型,以便与我的 "date" 字段进行比较。您希望将该类型与数据流中表示的内容对齐,例如:DT_DATE、DT_DBTIMESTAMP 等
true
是条件为真时的值。您 运行 面临的挑战之一是保持数据类型的一致性。与上面相同的注意事项,但您可能需要 (DT_DATE)"1900-01-01"
false
见上文,但条件为假。这更容易,因为不需要类型转换。 [date]
因此
([date] < (DT_DATE)"1900-01-01") ? (DT_DATE)"1900-01-01" : [date]