json - 计算存储为 Hive 字符串列的 JSON 数组中的对象数
问题描述
我有一个 Hive 表,其中 JSON 字符串存储为列中的字符串。像这样的东西。
Id | Column1 (String)
1 | [{k1:v1,k2:v2},{k3:v3,k4:v4}]
2 | [{k1:v1,k2:v2}]
我想计算列中 JSON 对象的数量。
Id | Count
1 | 2
2 | 1
实现这一目标的查询是什么?
解决方案
如果 JSON 对象是没有嵌套结构的简单结构,那么您可以拆分'}'
并使用size()-1
:
size(split(column,'[}]'))-1
它可以正确处理空字符串,如果您需要转换为 0,则 NULL 需要特殊处理:
case when column is null then 0 else size(split(column,'[}]'))-1 end
推荐阅读
- python - 在 Windows 10 上安装 Python 3.7 的路径时遇到问题
- pandas - 如何处理熊猫无法识别的空单元格?
- matlab - 我可以从 fminsearch 获得雅可比行列式吗
- java - 使用@Embedded 类的“字段列表”中的未知列
- regex - 比赛后负前瞻
- pip - 如何在 `pip-9.03` 和 `python-2.6` 中修复此错误
- r - 为堆积面积图指定颜色
- java - OnClickListener 未在回收站视图中调用
- java - 如何使用 Java Streams API 正确过滤开始日期和结束日期之间的日期?
- node.js - Node.js SQLite get 语句没有返回任何内容