我试图根据几个条件从'geocode'中提取'vertex_code':
localhost:8080/actuator/metrics
现在,获取的'code'值必须与'geocode'值(前缀)连接,并再次与末尾的00连接(后缀)以形成'vertex_code'
例如:SUBSTRING(geocode,0,2) ----> Code
00-51 ----> 01
70 ----> 03
61-78 ----> 04
Else ----> 00
如果geocode = 44556677
介于SUBSTRING(geocode,0,2)
之间,那么00-51
因此vertex_code = 014455667700
以下是我的剧本:
code=01
我收到以下错误:
2018-01-29 09:00:40,645 [main] ERROR org.apache.pig.tools.grunt.Grunt - 错误1039 :(名称:等于类型:null Uid:null)Equal中不兼容的类型 操作员左手边:chararray右手边:int
非常感谢帮助。
答案 0 :(得分:1)
您必须将其强制转换为int然后进行比较
newitem = FOREACH item GENERATE load_id, record_type,
(CASE
WHEN ((int)SUBSTRING(geocode,0,2) <= 51 THEN CONCAT('01',CONCAT(geocode,'00'))
WHEN ((int)SUBSTRING(geocode,0,2) = 70 THEN CONCAT('03',CONCAT(geocode,'00'))
WHEN ((int)SUBSTRING(geocode,0,2) >= 61 and ((int)SUBSTRING(geocode,0,2) <=78 THEN CONCAT('04',CONCAT(geocode,'00'))
ELSE CONCAT('00',CONCAT(geocode,'00'))
END) AS vertex_code;
DUMP newitem;