如何为每一行创建一个字段并在每个转换级别向其附加一些文本

how to create a field for each row and append some text to it in each level of transformation

我正在使用 SSIS 将一些数据从一个数据库传输到另一个数据库。

有一个逻辑,我需要检查一些条件,每个条件都有一条错误消息。根据要求,应该有一列错误文本应该附加到它。

我试图在 "Derived Column" 中创建一个列,然后将我的错误文本分配给它。

对于第二种情况,我在 "Derived Column" 中创建了一个新列,添加的前一列和新的下一列创建了第二列,直到其他情况结束。

现在的问题是它运行不正常,我有。

我想知道在 SSIS 中向列添加新文本行的最佳解决方案是什么。

伪代码如下:

String error_text = "";

if logic 1 failed then error_text+= "error1"
if logic 2 failed then error_text+= "error2"
if logic 3 failed then error_text+= "error3"

我的数据库是 Oracle,我使用的是 OLEDB 连接。

首先尝试使用条件拆分拆分数据,然后对每个错误条件使用派生列。那应该有帮助。另外,您可以尝试在 Oracle 中创建 CASE 语句,看看这对您来说是否更容易。

您有以下选择:

  • 为派生列任务的每个验证创建一个新列。这应该使表达式简单且易于跟踪。在前一个任务之后生成另一个派生列任务,将所有可能的错误连接在一起,这将是您的最终错误消息。

  • 通过将所有验证表达式合并到一个巨大的、难以维护甚至更难阅读的 SSIS 表达式中,创建一个包含所有可能错误消息的新列。 SSIS 语法不是这些案例的最佳语法。

  • 在你的数据源中做你的逻辑,在你的情况下会在你的 Oracle 数据库中。 SQL 比 SSIS 表达式更容易查看和维护(通常更快)。

  • 使用自定义脚本(如 VB 或 C#)检查条件并生成错误消息。它比使用 SSIS 表达式要好,但需要更多的编程知识。

如果您减少了错误验证的数量(低于 10 个),那么我建议您采用第一种方法。如果您精通 C#/VB,或者您可以预料到您将需要大量审查和维护,那么最后一个将是最好的。