sql - 在 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]
解决方案
我不确定 json 文件是如何工作的。但是,coalesce或NVL 是可以满足您要求的功能。
推荐阅读
- r - 如何修复“grouped_df_impl(data, unname(vars), drop) 中的错误:列 `...` 未知”。在函数中使用管道、group_by 和汇总
- python - 如何使用 ruamel.yaml 添加评论
- wpf - 在 WPF 的 WrapPanel 中的 LiveCharts 的情况下,它不能垂直滚动,
- amazon-web-services - 使用隧道 EC2 通过 SSH 将 Tableau 最终用户连接到 AWS RDS Aurora
- git - 多个开发人员在一个功能分支上提交
- r - 为什么通过网格搜索调整后随机森林仍然过拟合?
- javascript - 删除 chart.js 条形图中的删除线行为
- c# - 如何将ASCII码发送到串口c#
- chart.js - 我的堆叠条形图中未使用我选择的颜色
- laravel - 来自 API 回调的 Laravel 5.8 会话丢失