首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >宾得ETL :修改后的Javascript步骤"SKIP_TRANSFORMATION“转换常量工作逻辑

宾得ETL :修改后的Javascript步骤"SKIP_TRANSFORMATION“转换常量工作逻辑
EN

Stack Overflow用户
提问于 2015-07-19 09:45:34
回答 1查看 3.1K关注 0票数 3

为什么SKIP_TRANSFORMATION只在CONTINUE_TRANSFORMATION分配给trans_Status时才能工作?我无法在wiki链接中找到有关这方面的信息

代码语言:javascript
复制
//Not working (not getting skipped)
if (sequence_value%2==0){
    trans_Status = SKIP_TRANSFORMATION;
}
代码语言:javascript
复制
//Working (checked from an online example)
trans_Status = CONTINUE_TRANSFORMATION;
if (sequence_value%2==0){
    trans_Status = SKIP_TRANSFORMATION;
}

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-19 20:05:30

代码语言:javascript
复制
trans_Status=CONTINUE_TRANSFORMATION;

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

代码语言:javascript
复制
trans_Status=SKIP_TRANSFORMATION;

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

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

理解(我认为)的最佳方法是在JS步骤中使用下面的snip:

代码语言:javascript
复制
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),然后放置所有条件。

您也可以在相同的位置阅读我的博客

希望这个解释有所帮助,并希望我是对的

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31499900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档