计算 json 对象中键的出现次数 - IMPALA/HIVE

Posted

技术标签:

【中文标题】计算 json 对象中键的出现次数 - IMPALA/HIVE【英文标题】:Count the number of occurences of a key in a json object - IMPALA/HIVE 【发布时间】:2021-07-08 14:38:26 【问题描述】:

我的 Impala 表中有一个列,它是一个 map。我已将该列提取为 2 个不同列中的键和值对,如下所示。 value 列是一个 json 对象。我必须找出特定 id 的值列中的特定键是否多次出现。

id   |  key    |   value

1    | brm_res  | 'abc':'3rr','vbg':''r45','abc':'5rr'

2    | brm_res  | 'abc':'3rr','vbg':''r45','bgh':'5rr'

3    | brm_res  | 'abc':'3rr','vbg':''r45','tyu':'5rr'

4    | brm_res  | 'abc':'3rr','vbg':''r45','yuo':'5rr'

如上例所示,对于特定的 id(id=1) 和 key(brm_res),value 列中有 (abc) key 的 2 个条目。如何找到这个。

请指导。提前致谢。

【问题讨论】:

【参考方案1】:

可以计算初始字符串的字符长度,去掉所有出现的key,计算长度差,除以key的长度,就是出现的次数。像这样的东西(未测试):

(char_length(value)-char_length(replace(value, "\'abc\':", ''))) div char_length("\'abc\':");

【讨论】:

这可能有效,我们也可以使用length()。但是 OP 想知道某个键列出现了多少次,abc 只是一个例子,它可以是任何东西。 @KoushikRoy 是的,这个表达式返回某个键列出现了多少次,可以用别的东西代替abc

以上是关于计算 json 对象中键的出现次数 - IMPALA/HIVE的主要内容,如果未能解决你的问题,请参考以下文章

此 JSON 对象中键的类型是啥 yourVariable: "nothing yet"

如何检索json中键的特定值?

Appsetting.json 读取控制器类中键的值,空白?

是否有一个 swift 库可以让您自定义 JSON 中键的顺序?

根据对象中键的名称过滤对象数组[重复]

是否可以计算每个键在 JSON 列中出现的次数?