我正在尝试实现一个条件foreach生成,其中一列数据根据输入数据而变化。
比如说我在别名A:
中有这个数据dump A;
(George, Films)
(Martin, Books)
如果名字以G开头,我想存储一个Y.从documentation我知道有一个条件算术运算,但我找不到用'从X开始'的方法。我认为它应该是这样的,#####是缺失的条件。
B = FOREACH A GENERATE (##### ? "Y":"N");
答案 0 :(得分:1)
您正在寻找SUBSTRING功能。像这样使用它:
b = foreach a generate $0.., (SUBSTRING($0,0,1)=='G'?'y':'n');
在这里阅读更多相关信息
https://pig.apache.org/docs/r0.9.1/func.html#substring
它会给你
(George,Films,y)
(Martin,Books,n)
答案 1 :(得分:0)
您可以在//run it before update query
SELECT post_text FROM posts WHERE post_text REGEXP 'quote:[a-zA-Z0-9]{10}';
中应用UDF:
UPDATE posts
SET post_text = 'quote:'
WHERE post_text REGEXP 'quote:[a-zA-Z0-9]{10}';
其中GENERATE
是您编写的函数,用于执行您想要的逻辑。我没有意识到没有UDF的方法。