我想使用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 ($0 matches '.*PID.*');
MSH_DATA = FOREACH data GENERATE $2 AS id, $5 AS ame , $7 AS dob, $8 AS gender, $-1 AS rk;
代码2:
STOCK_A = LOAD '/user/rt/PARSED' USING PigStorage('|');
data = FILTER STOCK_A BY ($0 matches '.*PID.*');
MSH_DATA = FOREACH data GENERATE $2 AS id, $5 AS ame , $7 AS dob, $8 AS gender, REGEX_EXTRACT(data,'\\s*(\\w+)$',1) AS rk;
代码2的错误:
错误org.apache.pig.tools.grunt.Grunt - 错误1200:Pig脚本失败 解析:标量投影无效:数据:A 列需要从关系中进行投影才能将其用作 标量
请帮忙