我有一个与此类似的表,其中我需要从 id 等于 2 的每个 json 字段中提取值。我已经尝试了多个示例,但无法设法了解如何操作 json_tuples / Lateral视图/爆炸进入我的场景。 非常感谢任何帮助!
value1,value2,value3,"[{""id"":1,""value"":""x""},{"id"":2,""value"":""y""}, {"id"":3,""value"":""blah""}]"
value4,value5,value6,"[{""id"":1,""value"":""a""},{"id"":2,""value"":""b""}, {"id"":3,""value"":""blahblah""}]"
col1 | col2 | col3 | id2值 |
---|---|---|---|
值1 | 值2 | 值3 | y |
值4 | 值5 | 值6 | b |
我尝试操纵的示例: 如何从 Hive 中的 json 字符串中提取选定的值 -不知道如何检查子行中的值
Hive Sql 查询从 Json 数组获取 Json 对象 -不知道如何将其与选择普通列结合起来
你的例子有点不清楚,所以我做了一些猜测和假设(value*字符串位于单独的列中,你的json字符串存储在数组列中,...并且你的json数组中的引号是这样的一团乱,这不是有效的 json。)
您可以在 json 数组(技术上是结构数组)上使用横向视图,然后您可以对其进行过滤。
select
col1,
col2,
col3,
exp.id,
exp.value
from
<your table>
lateral view inline(<array column>) exp as id,value
where
exp.id = 1