如何解析字段的最后一个字符并替换为猪中的另一个字符?
How to parse last character of a field and replace with another character in pig?
我在列 'fruits' 中有这样的数据:
apple/green/
apple/red/
apple/brown
我需要做的是删除第 1 行和第 2 行末尾的“/”字符。无需在第 3 行中进行任何更改。我的输出应该是
apple/green
apple/red
apple/brown
我试过这样做..
b = foreach a generate (fruits), ENDSWITH(fruits,'/')==true ? REPLACE(SUBSTRING(fruits, (INT)LAST_INDEX_OF(fruits, '/'), (INT)SIZE(fruits)),'');
基本上我试图在结尾处用 space ' ' 替换 '/' 符号。
但是我在使用此命令时遇到错误。有人可以帮忙吗?
Bincond 运算符具有以下语法:
(condition ? value_if_true : value_if_false)
因此,else
部分是必须的,这样写:
b = foreach a generate (fruits), ENDSWITH(fruits,'/')? REPLACE(SUBSTRING(fruits, (INT)LAST_INDEX_OF(fruits, '/'), (INT)SIZE(fruits)),'') :fruits ;
或者更简单,考虑使用 REPLACE 函数:
b = foreach a generate REPLACE(fruits,'[/]$','');
我在列 'fruits' 中有这样的数据:
apple/green/
apple/red/
apple/brown
我需要做的是删除第 1 行和第 2 行末尾的“/”字符。无需在第 3 行中进行任何更改。我的输出应该是
apple/green
apple/red
apple/brown
我试过这样做..
b = foreach a generate (fruits), ENDSWITH(fruits,'/')==true ? REPLACE(SUBSTRING(fruits, (INT)LAST_INDEX_OF(fruits, '/'), (INT)SIZE(fruits)),'');
基本上我试图在结尾处用 space ' ' 替换 '/' 符号。
但是我在使用此命令时遇到错误。有人可以帮忙吗?
Bincond 运算符具有以下语法:
(condition ? value_if_true : value_if_false)
因此,else
部分是必须的,这样写:
b = foreach a generate (fruits), ENDSWITH(fruits,'/')? REPLACE(SUBSTRING(fruits, (INT)LAST_INDEX_OF(fruits, '/'), (INT)SIZE(fruits)),'') :fruits ;
或者更简单,考虑使用 REPLACE 函数:
b = foreach a generate REPLACE(fruits,'[/]$','');