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 多个条件拆分

SSIS 条件拆分错误 - 表达式评估为 NULL,但“条件拆分”需要布尔结果

SSIS中对多个工作表的条件拆分转换

SSIS条件性分裂谱系误差

SSIS 条件拆分错误 - 数据类型 DT_BYTES 不能与二元运算符“==”一起使用

如果条件不满足,派生列表达式SSIS如何忽略表达式?