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

Posted

技术标签:

【中文标题】计算存储为 Hive 字符串列的 JSON 数组中的对象数【英文标题】:Count number of objects in JSON array stored as Hive string column 【发布时间】:2019-03-13 17:22:08 【问题描述】:

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

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

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

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

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

【讨论】:

以上是关于计算存储为 Hive 字符串列的 JSON 数组中的对象数的主要内容,如果未能解决你的问题,请参考以下文章

如何识别 Hive 中重复出现的字符串列?

从 hive 中的字符串中获取特定值

Hive 通用 UDTF 因数组索引超出范围错误而失败

如何将数组字符串列展平为雪花中的行?

使用带有json字符串列的中继器

我应该将 ArrayList 中的图像保存为 SQLite 字符串列中的 Json 对象吗