3

为什么 SKIP_TRANSFORMATION 仅在 CONTINUE_TRANSFORMATION 分配给 trans_Status 时才有效?我无法在wiki 链接中找到有关此的信息

//Not working (not getting skipped)
if (sequence_value%2==0){
    trans_Status = SKIP_TRANSFORMATION;
}

//Working (checked from an online example)
trans_Status = CONTINUE_TRANSFORMATION;
if (sequence_value%2==0){
    trans_Status = SKIP_TRANSFORMATION;
}

提前致谢。

4

1 回答 1

3
trans_Status=CONTINUE_TRANSFORMATION;

它所做的是,它读取所有传入的行并对其进行处理并将其移至下一步。默认情况下。

trans_Status=SKIP_TRANSFORMATION;

它从已处理的行中读取数据并拒绝它。

但是在过滤掉结果的情况下(如您的问题) ,情况会有所不同。为了根据特定条件过滤或拒绝行,trans_Status 应该首先拥有所有已处理行的副本。一旦它在变量中可用,基于条件的SKIP_TRANSFORMATION将拒绝/过滤条件。这基本上是问题中场景的原因。在您的情况下(不使用 CONTINUE_TRANSFORMATION), trans_Status 没有找到任何存储/处理的变量来应用条件。

理解(我假设)的最佳方法是在 JS 步骤中使用以下片段:

if(field == "BB"){      //condition to filter the rows          
     trans_Status=SKIP_TRANSFORMATION;     //filter rows on condition
}
Alert(field);

在这里,字段是来自上一步/源的数据字段。取一些 5-10 个数据,仅用于 POC。

预览JS 脚本后,您会发现最初所有源值(字段列)都会被警告。但是一旦所有的行都被预览或处理,那么 SKIP_TRANSFORMATION 将起作用并拒绝所有的行,最终给你所有被拒绝的行。

所以,总结一下,如果你在 JS 中应用了任何条件并且你想使用这些常量。您可能需要确保首先处理所有行并将其存储到 trans_Status 变量中(最好的方法是使用 CONTINUE_TRANSFORMATION),然后放置所有条件。


你也可以阅读我的博客

希望这个解释有帮助,希望我是正确的:)

于 2015-07-19T20:05:30.130 回答