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

查询嵌套类型Map<string, timestamp>的completed字段问题求助

解决方案

根据你使用的SQL引擎不同,处理嵌套键值对字段的语法有所区别,以下是几种常见场景的解决方法:

1. 如果events是Map类型(如Spark SQL、Hive)

使用element_at函数或直接键索引,同时过滤掉无completed字段的行:

-- Spark SQL/Hive通用写法
SELECT element_at(events, 'completed') AS completed
FROM table
WHERE element_at(events, 'completed') IS NOT NULL

或者Spark中也可以直接用索引:

SELECT events['completed'] AS completed
FROM table
WHERE events['completed'] IS NOT NULL

2. 如果events是JSON字符串类型(如Hive、MySQL)

先解析JSON字符串再提取字段:

-- Hive
SELECT get_json_object(events, '$.completed') AS completed
FROM table
WHERE get_json_object(events, '$.completed') IS NOT NULL

-- MySQL
SELECT JSON_UNQUOTE(JSON_EXTRACT(events, '$.completed')) AS completed
FROM table
WHERE JSON_CONTAINS_PATH(events, 'one', '$.completed')

3. 如果是PostgreSQL的JSONB类型

使用PostgreSQL专属的JSON操作符:

SELECT events ->> 'completed' AS completed
FROM table
WHERE events ? 'completed'

报错原因说明

你遇到的Column 'completed' cannot be resolved错误,大概率是因为:

  • 你的SQL引擎不支持events["completed"]这种索引语法
  • events是字符串类型而非结构化的Map/JSON类型,需要先解析成结构化对象才能提取字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:56:02