我有壳牌的数据,917.14美元,654.23美元我必须找出$1和$2列中的最小值我试着按这些列按asc顺序排序但答案并不正确。有人能帮忙吗?
6ie5vjzr1#
参考最小值
A = LOAD 'test1.txt' USING PigStorage(',') as (f1:chararray,f2:float,f3:float,f4:int,f5:int,f6:int);B = GROUP A ALL;C = FOREACH B GENERATE MIN(A.f2),MIN(A.f3);DUMP C;
A = LOAD 'test1.txt' USING PigStorage(',') as (f1:chararray,f2:float,f3:float,f4:int,f5:int,f6:int);
B = GROUP A ALL;
C = FOREACH B GENERATE MIN(A.f2),MIN(A.f3);
DUMP C;
edit1:您正在加载的数据中有“$”。您必须清除它并将其加载到float字段以应用min函数,或者将其加载到chararray并替换“$”,然后将其强制转换为float并应用min函数。edit2:这是一个解决方案,不删除原始数据中的$,而是在pigscript中处理它。输入:
shell,$820.48,$11992.70,996,891,1629shell,$817.12,$2105.57,1087,845,1630Bharat,$974.48,$5479.10,965,827,1634Bharat,$943.70,$9162.57,939,895,1635
shell,$820.48,$11992.70,996,891,1629
shell,$817.12,$2105.57,1087,845,1630
Bharat,$974.48,$5479.10,965,827,1634
Bharat,$943.70,$9162.57,939,895,1635
Pig笼草
A = LOAD 'test5.txt' USING TextLoader() as (line:chararray);A1 = FOREACH A GENERATE REPLACE(line,'([^a-zA-Z0-9.,\\s]+)','');B = FOREACH A1 GENERATE FLATTEN(STRSPLIT($0,','));B1 = FOREACH B GENERATE $0,(float)$1,(float)$2,(int)$3,(int)$4,(int)$5;C = GROUP B1 ALL;D = FOREACH C GENERATE CONCAT('$',(chararray)MIN(B1.$1)),CONCAT('$',(chararray)MIN(B1.$2));DUMP D;
A = LOAD 'test5.txt' USING TextLoader() as (line:chararray);
A1 = FOREACH A GENERATE REPLACE(line,'([^a-zA-Z0-9.,\\s]+)','');
B = FOREACH A1 GENERATE FLATTEN(STRSPLIT($0,','));
B1 = FOREACH B GENERATE $0,(float)$1,(float)$2,(int)$3,(int)$4,(int)$5;
C = GROUP B1 ALL;
D = FOREACH C GENERATE CONCAT('$',(chararray)MIN(B1.$1)),CONCAT('$',(chararray)MIN(B1.$2));
DUMP D;
输出
1条答案
按热度按时间6ie5vjzr1#
参考最小值
edit1:您正在加载的数据中有“$”。您必须清除它并将其加载到float字段以应用min函数,或者将其加载到chararray并替换“$”,然后将其强制转换为float并应用min函数。
edit2:这是一个解决方案,不删除原始数据中的$,而是在pigscript中处理它。
输入:
Pig笼草
输出
