检查猪的情况后康卡特

时间:2016-11-29 12:51:19

标签: apache-pig

我正在尝试 CONCAT 我猪中的一个列,如果某个条件匹配,我正在使用下面的代码,但它会抛出错误。

CODE:

var array = ["1-jun-15", "1-feb-15", "1-apr-15", "1-may-15", "1-jan-15", "1-mar-15"];

var months = [
	"jan", "feb","mar","apr","may","jun","jul","aug","sep","oct","nov", "dec"
];

function parse(date) {
    var parts = date.split('-');
    return new Date('20'+parts[2], months.indexOf(parts[1]), parts[0]);
}

array.sort(function(a, b) {
    return parse(a).getTime() - parse(b).getTime();
});

console.log(array);

错误:

STOCK_A = LOAD '/user/cloudera/pati1.hl7' USING PigStorage('|');
data = FILTER STOCK_A BY ($0 matches '.*OBR.*' or $0  matches '.*OBX.*');
MSH_DATA = FOREACH data GENERATE ($0=='OBR' ? CONCAT('OBR',CurrentTime(),$1) : ($0=='OBX' ? CONCAT('OBR',CurrentTime(),$1))) AS Uid; , $1 AS id, $5 AS result, $3 AS resultname;
Dump MSH_DATA;

1 个答案:

答案 0 :(得分:1)

来源:CONCAT两个元素的数据类型必须相同,可以是chararray或bytearray。

首先,您正在尝试CONCAT不同数据类型的字段。将字段设置为chararray.Second,您的二进制语法不正确。因为您已经过滤了值OBR和OBX的记录,所以您无需检查{{1第三,当$0 == 'OBX'的值再次将OBR与当前时间连接时,与if部分相同。第四,有一个&#39 ;;'在Uid之后这是不正确的。

$0 == 'OBX'