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

KSQl如何将字符串类型JSON转为数组并使用EXPLODE展开?

解决方案:KSQL解析JSON字符串并展开categories数组

核心思路

由于FULLDOCUMENT是存储为VARCHAR的JSON字符串,需要先将其解析为JSON结构,再提取目标数组,最后用EXPLODE展开并提取具体的$oid值。

分步实现

  1. 解析字符串为JSON对象
    使用JSON_PARSE函数将字符串类型的FULLDOCUMENT转换为可操作的JSON对象:

    JSON_PARSE(FULLDOCUMENT)
    
  2. 提取categories数组
    通过JSON_EXTRACT_ARRAY从解析后的JSON中取出categories数组:

    JSON_EXTRACT_ARRAY(JSON_PARSE(FULLDOCUMENT), '$.categories')
    
  3. 展开数组并提取$oid值
    用EXPLODE将数组拆分为单行,再通过JSON_EXTRACT_SCALAR(或箭头语法)提取每个元素中的$oid值。

完整查询语句

写法一:使用JSON函数

SELECT JSON_EXTRACT_SCALAR(category, '$.["$oid"]') AS CATEGORIES
FROM your_topic_name
CROSS JOIN EXPLODE(JSON_EXTRACT_ARRAY(JSON_PARSE(FULLDOCUMENT), '$.categories')) AS t(category);

写法二:使用箭头简化语法(KSQL 5.3+支持)

SELECT category->'$oid' AS CATEGORIES
FROM your_topic_name
CROSS JOIN EXPLODE(JSON_PARSE(FULLDOCUMENT)->'$.categories') AS t(category);

关键说明

  • 由于$oid是带特殊符号$的键,访问时需要用["$oid"]或->'$oid'的方式,避免语法冲突。
  • CROSS JOIN EXPLODE是KSQL中展开数组的标准方式,会将数组的每个元素转换为单独的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:36:21