我正在尝试 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;
答案 0 :(得分:1)
来源:CONCAT:两个元素的数据类型必须相同,可以是chararray或bytearray。
首先,您正在尝试CONCAT不同数据类型的字段。将字段设置为chararray.Second,您的二进制语法不正确。因为您已经过滤了值OBR和OBX的记录,所以您无需检查{{1第三,当$0 == 'OBX'
的值再次将OBR与当前时间连接时,与if部分相同。第四,有一个&#39 ;;'在Uid之后这是不正确的。
$0 == 'OBX'