SSIS有条件拆分拒绝文件[关闭]
Posted
技术标签:
【中文标题】SSIS有条件拆分拒绝文件[关闭]【英文标题】:SSIS Conditional Split Reject files [closed] 【发布时间】:2020-09-02 16:01:09 【问题描述】:我想将数据迁移到目标表。 但是,我想为空值和大小超过 20 个字符的值制作拒绝文件。就像我对条件拆分所做的那样? 我这样做了,但它不起作用:
"if len(mail)>10 caractère"
我会将此值导出到拒绝文件
请问我该怎么做?
【问题讨论】:
您能否提供更多细节。 【参考方案1】:设计
您可以在有条件的拆分中直接执行此操作,但我建议您不要这样做。相反,计算派生列中的布尔(真/假)条件并将其添加到您的数据流中。然后,如果您得到意外结果,您可以在派生列步骤和条件拆分之间添加一个数据查看器
实施
向数据流添加派生列。添加一个名为BadMail
的新列。如果它是真的,那么我们将路由到坏文件。如果是真的,它将前往目的地。
SSIS 的表达式语言将使用三元运算符(test) ? true_condition : false_condition
我将测试空 ISNULL(mail)
,超过 20 个 len(mail) > 20
和零长度 len(mail) == 0
。
||
是一个逻辑左右,如果这三个条件中的任何一个为真,那么我们需要将 BadMail 设置为真
(ISNULL(mail) || len(mail) > 20 || len(mail) == 0) ? true : false
您可以简化它以消除三元运算符,但我发现在这些情况下明确表达我的意图很有帮助。附带说明一下,如果您仍然遇到意外结果问题,请添加前面的派生列转换并为每个条件(null、0 或大于 20 个字符)添加一列,然后您可以单独检查它们。
现在,我们添加条件拆分
这里的表达式只是我们的新列BadMail
,它将路由到输出路径 1 或您命名的任何内容。好的邮件会通过默认的输出路径。
【讨论】:
以上是关于SSIS有条件拆分拒绝文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
SSIS 条件拆分错误 - 表达式评估为 NULL,但“条件拆分”需要布尔结果