在Talend中使用不同列的Case语句

时间:2016-08-28 11:15:47

标签: talend

我的案例陈述如下

当col1喜欢'%other%'然后'否'其他col5以col5结尾

就像在SQL中一样,我需要使用不同的列实现case语句,并使用“'其他”字样的通配符检查。所有在talend如何做到这一点?

3 个答案:

答案 0 :(得分:1)

您的问题不明确,没有任何截图或解释。 我假设你有一些输入组件,比如带有行的tOracleInput,在模式中有多个列。我建议使用tMap组件来操作模式的内容,尤其是表达式构建器。

P.S。我个人更喜欢使用tJavaFlex进行列验证/操作,这样代码更具可读性,但它是更先进的技术。

答案 1 :(得分:0)

如果没有动态创建列,您可以在 tMap 中添加一个案例。

因此,对于新的布尔列,您可以创建表达式:

row1.mycolumn1.toLowerCase().contains("other") ? new Boolean.true : new Boolean.false;

布尔字段将保存检查值。

编辑

由于此处不需要新的布尔列,因此您的特定要求如下所示:

row1.product_code.toLowerCase().contains("other") ? "No data" : row1.product_code;

答案 2 :(得分:0)

请按以下方式查看输入 col1 col2 col3 col4 col5
---- ---- ---- ---- ---- aaa aaa aaa aaa aaa otherbbb bbb bbb bbb bbb
ccc ccc ccc ccc ccc

在tMap中,您必须在表达式构建器中对col5

具有以下语句

input.col1.contains("other")?"No":input.col5

然后输出如下

col1 col2 col3 col4 col5
---- ---- ---- ---- ---- aaa aaa aaa aaa没有
otherbbb bbb bbb bbb没有
ccc ccc ccc ccc ccc