Hadoop / Hive - 根据CASE语句将列导入一个 - 严格的格式

时间:2016-02-07 00:14:28

标签: sql hadoop hive hiveql

我有一个如下所示的数据集:

Current Data Set

我希望将数据集推断为每行一个会话,如果发生则显示“是”...例如,对于会话#5,它应该显示:

Desired Data Set

我正在使用Hive来做这个...有没有人有任何建议?从逻辑上讲,我可以理解如何点缀它,但我无法理解它。

1 个答案:

答案 0 :(得分:0)

尝试以下查询,您将完全按照预期获得答案。

选择s_id,例如当cont = 1然后'是'否则'否'结束,当cont1 = 1时则为'是'否则'否'结束,当cont2 = 1时则为'是'否则'否'结束,cont3 = 1的情况,然后'是'否则'否'结束,cont4 = 1时的情况然后'是'否则'否'结束,当cont5 = 1时则为'是'否则'否'结束(选择s_id,当count(s_id)> 1或count(s_id)= 1时,sum(cnt)结束为cont,count(s_id)> 1或count(s_id)= 1时则sum(cnt1)结束为cont1,当count(s_id)> 1或count(s_id)= 1时,sum(cnt2)结束为cont2,当count(s_id)> 1或count(s_id)= 1时,sum(cnt3)结束为cont3,当count(s_id)> 1或count(s_id)= 1时,sum(cnt4)结束为cont4,count(s_id)> 1或count(s_id)= 1时的情况则sum(cnt5)结束为cont5 (选择s_id,dd = 1时的情况,然后是1,否则0结束为cnt,dd1 = 1时则为1,否则0结束为cnt1,dd2 = 1则为1,否则0结束为cnt2,dd3 = 1则为1)否则0结束为cnt3,dd4 = 1则为1,否则0结束为cnt4,dd5 = 1则为1,否则0结束为cnt5(来自选择s_id,regexp_replace(url1,'是',1)作为dd,regexp_replace(url2,'是',1)作为dd1,regexp_replace(url3,'是',1)作为dd2,regexp_replace(url4,'是', 1)作为dd3,regexp_replace(url5,'是',1)作为dd4,regexp_replace(url6,'是',1)作为dd5来自eg4)a)b group by s_id)c;