如何获取 Pig Script 中的最后一个元素
How to get the last element in Pig Script
我想使用 pig 脚本获取一行的最后一个元素。我不能使用 $ 因为最后一个元素的索引不固定。我尝试使用正则表达式,但它不起作用。我尝试使用 $-1 来获取它,但它没有用。我只发布一个示例,因为我的实际文件包含更多 PID。
样本:
MSH|�~\&|LAB|LAB|HEATH|HEA-HEAL|20247||OU�R01|M1738000000001|P|2.3|||ER|ER|
PID|1|YXQ120185751001|YXQ120185751001||ELJKDP@#PDUB||19790615|F||| H LGGH VW��ZHVW FKHVWHU�SD�19380|||||||4002C340778A|000009561|ELJKDP@#PDUB19790615F
我想获取 PID 的最后一个值 i;e ELJKDP@#PDUB19790615F
为此,我尝试了以下代码,但它不起作用。
代码 1:
STOCK_A = LOAD '/user/rt/PARSED' USING PigStorage('|');
data = FILTER STOCK_A BY ([=11=] matches '.*PID.*');
MSH_DATA = FOREACH data GENERATE AS id, AS ame , AS dob, AS gender, $-1 AS rk;
代码 2:
STOCK_A = LOAD '/user/rt/PARSED' USING PigStorage('|');
data = FILTER STOCK_A BY ([=12=] matches '.*PID.*');
MSH_DATA = FOREACH data GENERATE AS id, AS ame , AS dob, AS gender, REGEX_EXTRACT(data,'\s*(\w+)$',1) AS rk;
代码 2 错误:
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Pig script failed
to parse: Invalid scalar projection: data : A
column needs to be projected from a relation for it to be used as a
scalar
请帮忙
这应该有效
REGEX_EXTRACT(data,'([^|]+$)',1) AS rk
[^|]+$ 匹配最后一个竖线字符右侧的所有内容。
我想使用 pig 脚本获取一行的最后一个元素。我不能使用 $ 因为最后一个元素的索引不固定。我尝试使用正则表达式,但它不起作用。我尝试使用 $-1 来获取它,但它没有用。我只发布一个示例,因为我的实际文件包含更多 PID。
样本:
MSH|�~\&|LAB|LAB|HEATH|HEA-HEAL|20247||OU�R01|M1738000000001|P|2.3|||ER|ER|
PID|1|YXQ120185751001|YXQ120185751001||ELJKDP@#PDUB||19790615|F||| H LGGH VW��ZHVW FKHVWHU�SD�19380|||||||4002C340778A|000009561|ELJKDP@#PDUB19790615F
我想获取 PID 的最后一个值 i;e ELJKDP@#PDUB19790615F
为此,我尝试了以下代码,但它不起作用。
代码 1:
STOCK_A = LOAD '/user/rt/PARSED' USING PigStorage('|');
data = FILTER STOCK_A BY ([=11=] matches '.*PID.*');
MSH_DATA = FOREACH data GENERATE AS id, AS ame , AS dob, AS gender, $-1 AS rk;
代码 2:
STOCK_A = LOAD '/user/rt/PARSED' USING PigStorage('|');
data = FILTER STOCK_A BY ([=12=] matches '.*PID.*');
MSH_DATA = FOREACH data GENERATE AS id, AS ame , AS dob, AS gender, REGEX_EXTRACT(data,'\s*(\w+)$',1) AS rk;
代码 2 错误:
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Pig script failed to parse: Invalid scalar projection: data : A column needs to be projected from a relation for it to be used as a scalar
请帮忙
这应该有效
REGEX_EXTRACT(data,'([^|]+$)',1) AS rk
[^|]+$ 匹配最后一个竖线字符右侧的所有内容。