我需要以下输出。如何在猪中使用CASE语句?
NE 50
SE 80
我正在使用猪查询来计算基于区域的国家。
c1 = group country by zone;
c2 = foreach c1 generate COUNT(country.zone), (
case country.zone
when 1 then 'NE'
else 'SE'
);
但我无法实现我的输出。我得到如下错误:
2016-03-30 13:57:16,569 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1039: (Name: Equal Type: null Uid: null)incompatible types in Equal Operator left hand side:bag :tuple(zone:int) right hand side:int
Details at logfile: /home/cloudera/pig_1459370643493.log
但我能够使用以下查询。
c2 = foreach c1 generate group, COUNT(country.zone);
这将给以下的输出:
(1,50)
(2,80)
如何添加NE,而不是1和SE,而不是2?我认为使用CASE会有所帮助,但我得到错误。谁能帮忙?
如果我需要输出如下: NE 50 SE 80 AE 50 VR 40 如何使用foreach语句来比较基于它们的所有四个和计数国家/地区的区域? – bthapa
@BXT NE,SE AE,VR对应的值是多少? 1,2,3,4? –
非常感谢你的这样一个明确的解释。我在Hive中使用了CASE语句,并且感到困惑。我非常感谢你的工作。你是否也有大数据和hadoop的博客,这样我就可以轻松地学习,因为我是初学者? – bthapa