计算存储为Hive字符串列的JSON数组中的对象数

时间:2019-03-13 17:22:09

标签: json hive hiveql

我有一个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  

要实现此目标的查询是什么?

1 个答案:

答案 0 :(得分:1)

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

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

在此处查看测试:http://demo.gethue.com/hue/editor?editor=288202

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

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