You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将嵌套JSON数组转成ClickHouse多行?求转置查询语句

解决ClickHouse中转置嵌套JSON数组为多行的问题

针对你提供的嵌套JSON数组,不需要复杂的JSONExtract组合,用ARRAY JOIN配合JSON数组拆分函数就能轻松转置为多行,以下是具体实现:

直接处理JSON字符串字面量

如果你的JSON是字符串形式,可以用JSONExtractArrayRaw先拆分数组,再展开提取字段:

SELECT
    JSONExtractString(json_obj, 'a.b') AS b,
    JSONExtractInt(json_obj, 'a.c') AS c
FROM
    (SELECT JSONExtractArrayRaw('[{"a":{"b":"val", "c":1}},{"a":{"b":"val", "c":4}}]') AS json_array)
ARRAY JOIN json_array AS json_obj

处理表中的JSON字段

如果这个JSON数组存储在表的某个字段(比如json_col)中,查询语句可以改成:

SELECT
    JSONExtractString(json_obj, 'a.b') AS b,
    JSONExtractInt(json_obj, 'a.c') AS c
FROM
    your_table
ARRAY JOIN JSONExtractArrayRaw(json_col) AS json_obj

各部分作用说明

  • JSONExtractArrayRaw:将完整的JSON数组字符串拆分为单个JSON对象的字符串数组
  • ARRAY JOIN:把数组展开为多行,每个数组元素对应一行数据
  • JSONExtractString/JSONExtractInt:从单个JSON对象中提取嵌套的a.b(字符串类型)和a.c(整数类型)字段值

执行后会得到两行结果:

bc
val1
val4

内容的提问来源于stack exchange,提问作者Suleman C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:22:05