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

Presto中Map类型SQL语句失效求助,含JSON提取尝试失败情况

Presto SQL修复方案:JSON类型字段的条件统计

修复后的代码

SELECT
    city_id,
    value_map,
    SUM(CASE
        WHEN json_extract_scalar(value_map, '$.custom.rider.flexProductCell.cellIndex') IN ('0', '2')
        AND json_extract_scalar(value_map, '$.custom.rider.flexProductCell.keys.vehicleViewId') IN ('20054133', '20054595', '20055263')
        THEN 1
        ELSE 0
    END) AS top1_top3_product_count
FROM rider.fact_rider_app_event
GROUP BY city_id, value_map;

关键修复说明

  • 原代码使用map_value()函数失效,大概率是因为value_map是JSON字符串类型而非Presto原生MAP类型。Presto对JSON字符串和MAP类型的处理函数不通用。
  • 改用json_extract_scalar()函数:专门用于从JSON字符串中提取字符串/数字等标量值,路径语法必须以$开头,层级用.分隔,完全匹配你要提取的嵌套键路径。
  • 若确认value_map是MAP类型,先通过SELECT typeof(value_map) FROM rider.fact_rider_app_event LIMIT 1;验证字段类型,再检查键名是否完全匹配(比如大小写、特殊字符),此时可保留map_value()但需确保键无格式差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:37:34