gpt4 book ai didi

Pentaho ETL : Modified Javascript Step "SKIP_TRANSFORMATION" transformation Constant work logic

转载 作者:行者123 更新时间:2023-12-02 16:48:32 25 4
gpt4 key购买 nike

为什么只有当 CONTINUE_TRANSFORMATION 分配给 trans_Status 时 SKIP_TRANSFORMATION 才起作用?我无法在 wiki link 中找到与此相关的信息。

//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;
}

提前致谢。

最佳答案

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),然后放置所有条件。

<小时/>

您还可以阅读我的blog一样的。

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

关于Pentaho ETL : Modified Javascript Step "SKIP_TRANSFORMATION" transformation Constant work logic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31499900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com