Json - 在 pyspark 中展平键和值

Posted

技术标签:

【中文标题】Json - 在 pyspark 中展平键和值【英文标题】:Json - Flatten Key and Values in pyspark 【发布时间】:2021-08-30 23:06:53 【问题描述】:

在具有 JSON 列值的表中: "XXX": ["123","456"],"YYY": ["246","135"]

"XXX": ["123","456"],"YYY": ["246","135"], "ZZZ":["333","444"]

需要将其展平为

Key Value
XXX 123
XXX 456
YYY 246
YYY 135
ZZZ 333
ZZZ 444

请给个建议..

选择 钥匙 , 价值 , 从表中,json_each(xref_json::json)

得到这个结果为,需要达到上述结果

Key Value
XXX ["123","456"]
YYY ["246","135"]

【问题讨论】:

【参考方案1】:

您为此使用横向连接:

SELECT x.key, y.elem
FROM mytable
   CROSS JOIN LATERAL jsonb_each(mytable.xref_json::jsonb) AS x(key,value)
   CROSS JOIN LATERAL jsonb_array_elements(x.value) AS y(elem)
WHERE x.key IN ('XXX', 'YYY');

【讨论】:

在一个 Hive 表中 JSON 列值为:"XXX": ["123","456"],"YYY": ["246","135"] 需要展平它使用 PYSPARK 如下 Key Value XXX 123 XXX 456 YYY 246 YYY 135 建议请.. 我不知道 Pyspark,抱歉。不能使用 SQL 语句吗? 感谢您的提问。在上面的 postgres sql 查询中,我需要添加过滤条件,只需要获取键 XXX 和 YYY。假设我们在 json 列中有很多键 "XXX": ["123","456"],"YYY": ["246","135"], "ZZZ":["333","444" ] * 只有键 XXX 和 YYY 以及它的值 添加WHERE 条件。 ***.com/help/someone-answers

以上是关于Json - 在 pyspark 中展平键和值的主要内容,如果未能解决你的问题,请参考以下文章

如何将 java 映射展平为列表,以便列表交替键和值?

如何从 Pyspark 中的 MapType 列获取键和值

如何在javascript中获取json键和值?

如何在iOS swift的tableview中使用json响应中的键和值?

在spring boot中仅获取值而不是JSON响应中的键和值

如何在使用 Scala-Play Json 框架解析 Json 时获取键和值?