hadoop/hive-基于case语句将列推断为一列-严格格式

xfb7svmp  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(254)

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

我想让数据集推演到每行一个会话,用“是”表示是否发生了……例如,对于会话#5,它应该显示:

我用Hive来做这个。。。有人有什么建议吗?从逻辑上讲,我能理解如何打点,但我搞不懂。

e1xvtsh3

e1xvtsh31#

试试下面的查询,你一定会得到上面预期的答案。
选择s\U id,当cont=1时选择case,然后选择yes,否则选择no,当cont1=1时选择case,然后选择yes,否则选择no,当cont2=1时选择case,然后选择yes,否则选择no,当cont3=1时选择case,然后选择yes,否则选择no,当cont4=1时选择case,然后选择yes,否则选择no,当cont5=1时选择case,然后选择yes,否则选择no,当count(s\u id)>1或count(s\u id)=1时,case when count(s\u id)>1或count(s\u id)=1时,case when count(s\u id)>1或count(s\u id)=1,sum(cnt2)结束为cont2,当count(s\u id)>1或count(s\u id)=1,sum(cnt3)结束为cont3,当count(s\u id)>1或count(s\u id)=1,sum(cnt4)结束为cont4,当count(s\u id)>1或count(s\u id)=1时的case,然后sum(cnt5)结束为cont5 from(选择s\u id,当dd=1时的case,然后1 else 0结束为cnt,当dd1=1时的case,然后1 else 0结束为cnt1,当dd2=1时的case,然后1 else 0结束为cnt2,当dd3=1时的case,然后1 else 0结束为cnt3,当dd4=1时的case,然后1 else 0结束为cnt4,当dd5=1时,则1 else 0结束为cnt5 from(选择s\u id,regexp\u replace(url1,'yes',1)作为dd,regexp\u replace(url2,'yes',1)作为dd1,regexp\u replace(url3,'yes',1)作为dd3,regexp\u replace(url5,'yes',1)作为dd4,regexp\u replace(url6,'yes',1)作为dd5 from eg4)a)b按s\u id分组c;

相关问题