我使用Pig Latin来过滤数据记录,下面提到的行是我被卡住的记录。 输入行: / ACTRC5 / TXN08 / SCR301 \ / SEQ / TEX021 \ @
我期待的输出是: ACTRC5,TXN08,SCR301,SEQ,TEX021
反斜杠的数量可以是任意次,输入记录可以很长。我不知道应该用什么方法来获得输出。
非常感谢任何帮助/建议。
答案 0 :(得分:1)
以下是您问题的解决方案:
文件 problem.txt 包含以下数据,包含任意\或特殊字符序列:
样本数据 - // ACTRC5 // TXN08 / SCR301 / SEQ // TEX021 \ @
第一步是简单加载数据:
A = LOAD 'problem.txt' as line;
--The next two steps use the String Replace function to clean the data as per your needs:
B = FOREACH A GENERATE REPLACE(line,'([^a-zA-Z0-9\\s]+)',',') AS (data:chararray);
C = FOREACH B GENERATE REPLACE(data,'(^,|,$)','');
DUMP C;
输出: ACTRC5,TXN08,SCR301,SEQ,TEX021
这里我使用两个阶段来清理数据,稍后我会尝试发布单步解决方案。这应该有帮助。