用于解析和计算累积值的 Pig 脚本

Pig Script to parse and compute cumulative value

包含两列的输入文件:

Visit   ProductString
101      ;Cross Trainers;1;69.95,;Athletic Socks;10;29.99
102      ;Amplifier;1;120.90,;Headphone;2;59.99;leather wallet;1;99.99;

我正在寻找可以解析每行中的 "ProductString" 值并提供累积收入的 Pig 脚本。

ie.,Output:
69.95+29.99+120.90+59.99+99.99=380.82

我假设 59.99 之后应该有 ,99.99 之后不应该有 ;。如果是这样,您需要在 ,tokenizeflatten 来提取产品,然后在 ; 上拆分以获得商品价格和数量。

查询:

data = LOAD 'db.table';
A = FOREACH data GENERATE visit, FLATTEN(TOKENIZE(product_string, ',')) AS tmp_col;
B = FOREACH A GENERATE visit, STRSPLIT(tmp_col, ';') AS prod;
C = FOREACH B GENERATE visit, prod. AS item:chararray
    , (int)prod. AS qty:int, (double)prod. AS revenue:double;
grpd = GROUP C all;
D = FOREACH grpd GENERATE SUM(C.revenue);
DUMP D;

输出:

(380.82)