首页 > 解决方案 > 计算存储为 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  

实现这一目标的查询是什么?

标签: jsonhivehiveql

解决方案


如果 JSON 对象是没有嵌套结构的简单结构,那么您可以拆分'}'并使用size()-1

size(split(column,'[}]'))-1

它可以正确处理空字符串,如果您需要转换为 0,则 NULL 需要特殊处理:

   case when column is null then 0 else  size(split(column,'[}]'))-1 end

推荐阅读