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

Exasol中JSON_EXTRACT含短划线日期键的路径转义问题排查

解决Exasol解析含短划线日期键的JSON问题

问题根源

  • 非标准JSON格式:Progress_history列存储的是单引号包裹键值的伪JSON,而Exasol的JSON_EXTRACT要求标准JSON(键必须用双引号包裹),这是第二个错误的直接原因。
  • JSON路径转义错误:含短划线的特殊字符键,在Exasol的JSON路径中未正确转义,导致路径解析失败。

解决方案

步骤1:修正JSON格式

先将单引号替换为双引号,把非标准JSON转为Exasol可识别的标准格式:

SELECT
    kpi,
    REPLACE(progress_history, '''', '"') AS standard_json
FROM kpis

步骤2:正确解析含短划线的键

对于带短划线的键,在JSON路径中用双引号包裹键名,同时在SQL字符串中用双引号转义(两个双引号表示一个双引号),完整SQL如下:

SELECT
    kpi,
    progress_history,
    json_extract(
        REPLACE(progress_history, '''', '"'), -- 先转换为标准JSON
        '$."2020-01-01" LOG ON ERROR', -- 正确路径:双引号包裹带短划线的键
        '$.error()'
    )
    emits(
        "2020-01-01" INT,
        error_column VARCHAR(2000000)
    )
FROM kpis

可选:批量解析所有日期键

如果需要提取所有日期对应的数值,用JSON_TABLE展开键值对更灵活:

SELECT
    k.kpi,
    j.date_key,
    j.progress_value
FROM kpis k
JOIN JSON_TABLE(
    REPLACE(k.progress_history, '''', '"'),
    '$.*' COLUMNS (
        date_key VARCHAR(10) PATH '$',
        progress_value INT PATH '$'
    )
) j

错误说明

  • 第一个错误是因为路径格式错误,Exasol无法识别$.""2020-这类无效路径,正确格式应为$."键名"。
  • 第二个错误是原始数据用单引号包裹键,不符合JSON规范,导致JSON解析函数报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:10:27