首页 > 解决方案 > 在 hive 中,如果 A 不为空,如何选择 A,否则选择 B。A 和 B 都是 json 列中的字段

问题描述

我有一个蜂巢表,其中有两列。第一列名为user_id,第二列名为event,其中数据为 JSON 格式。该表的示例如下所示:

user_id, event
1231321, {"ts":1554254647,"items":[{"id":12342,"label1":null,"lable2":a},{"id":2,"label1":"c","lable2":"d"}]}
2131232, {"ts":1524254647,"items":[{"id":12433,"label1":null,"lable2":null},{"id":2,"label1":"c","lable2":"d"}]}

如何编写查询以获取 user_id 和标签(如果 lable1 可用,则为 label1,否则为 lable2)。使用上面的示例,查询结果将是:

user_id, lables
1231321, [c,a]
2131232, [c,d]

标签: sqlhivehiveqldata-science

解决方案


我不确定 json 文件是如何工作的。但是,coalesceNVL 是可以满足您要求的功能。


推荐阅读