从 JSON 转换数组中的列 [关闭]
Posted
技术标签:
【中文标题】从 JSON 转换数组中的列 [关闭]【英文标题】:Transform columns in Array from JSON [closed] 【发布时间】:2021-12-30 19:38:01 【问题描述】:我有一个包含以下数据的表格。
ID | DESCRIPTION | COLUMN1 | COLUMN2 | COLUMN3 |
---|---|---|---|---|
1 | TESTE1 | X1 | X2 | X3 |
2 | TESTE2 | X1 | X2 | X3 |
3 | TESTE3 | X1 | X2 | X3 |
4 | TESTE4 | X1 | X2 | X3 |
5 | TESTE5 | X1 | X2 | X3 |
我需要把它变成:
"id":1,
"description": "TESTE1",
"columns": [
"X1",
"X2",
"X3"
]
有人可以帮我吗?
【问题讨论】:
所有发布的只是程序描述,但这并不能告诉我们您遇到了什么问题。你尝试过什么,遇到过什么烦恼?请edit您的帖子包含valid question,我们可以回答。提醒:确保您知道on-topic 是什么;要求我们为您编写程序、建议和外部链接都是题外话。 根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。 不管你用什么语言写的,你需要自己研究,并在寻求帮助之前尝试。 这能回答你的问题吗? How do you condense the values in a T-SQL pivot into a JSON? 【参考方案1】:这是一种方法。 对字符串数组使用 string_agg & json_query。
select json from ( select t.id, t.description , json_query(ca.column_array, '$') columns from your_table t cross apply ( select concat('["', string_agg([col],'","'), '"]') from (values (column1), (column2), (column3)) c(col) ) ca(column_array) order by t.id for json path ) q(json)
还有另一种方式。 对字符串数组使用 json_modify。
select json from ( select id, description, json_modify( json_modify( json_modify('[]', 'append $', column1), 'append $', column2), 'append $', column3) as columns from your_table order by id for json path ) q(json);
json |
---|
["id":1,"description":"TESTE1","columns":["X1","X2","X3"],"id":2,"description":"TESTE2","columns":["X1","X2","X3"],"id":3,"description":"TESTE3","columns":["X1","X2","X3"],"id":4,"description":"TESTE4","columns":["X1","X2","X3"],"id":5,"description":"TESTE5","columns":["X1","X2","X3"]] |
dbfiddle here
上的演示【讨论】:
感谢 LukStorms以上是关于从 JSON 转换数组中的列 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 hql 将列表中的列转换为数组和数组到 hive 中的列表
使用 pyspark 将 Spark 数据框中的列转换为数组 [重复]
将每个具有一个对象的 JSON 对象数组转换为 JSON 对象数组 [关闭]