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

Snowflake中查询字典列表,提取key与val不相等的对应key值

Snowflake实现方案

你可以通过JSON数组打平+字段对比+分组聚合的逻辑实现需求,具体SQL如下:

WITH flattened_options AS (
    -- 打平options数组,提取每个元素的key、val值
    SELECT 
        attrs,
        f.value:key::STRING AS option_key,
        f.value:val::STRING AS option_val
    FROM 你的实际表名, -- 替换为你自己的表名
    LATERAL FLATTEN(input => options) AS f
    -- 如果options是字符串格式的JSON,上面一行改成 LATERAL FLATTEN(input => PARSE_JSON(options)) AS f
)
-- 筛选key和val不等的记录,按attrs聚合结果
SELECT 
    attrs,
    LISTAGG(option_key, ',') AS result
FROM flattened_options
WHERE option_key != option_val
GROUP BY attrs;

逻辑说明

  • 用LATERAL FLATTEN函数将每行的options JSON数组拆分为多条记录,每条对应数组里的一个字典对象
  • 提取每个字典的key和val字段并转成字符串类型做等值判断
  • 用LISTAGG聚合符合条件的key值,如果一个attrs下有多个不匹配的key,会用逗号拼接返回,符合通用场景
    你提供的示例数据执行以上SQL后,返回结果和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:54:04