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

Snowflake使用OBJECT_CONSTRUCT生成行级JSON返回异常问题

问题根因
  • Snowflake原生OBJECT_CONSTRUCT函数默认会自动忽略值为NULL的键,仅保留非空字段对应的键值对。如果某行只有单个字段非空,就会返回仅含单组键值对的结果,和你遇到的异常表现完全匹配。
  • 次要排查点:确认查询客户端未开启JSON结果自动截断、分行展示配置,部分可视化工具会将单个JSON对象拆分为多行显示,造成键缺失的错觉。
修复方案

方案1:每行返回固定结构的完整JSON对象

使用OBJECT_CONSTRUCT_KEEP_NULL替换默认的OBJECT_CONSTRUCT,即使字段值为NULL也会保留对应键,确保每行JSON都固定包含Address、Zip、State三个键:

SELECT
  OBJECT_CONSTRUCT_KEEP_NULL(
    'Address', Address,
    'Zip', Zip,
    'State', State
  ) AS json_value
FROM example_table_above;

方案2:直接输出指定格式的连续JSON块

如果需要直接得到逗号分隔的多JSON对象拼接结果,可使用以下语句一步生成目标格式:

SELECT
  ARRAY_TO_STRING(
    ARRAY_AGG(
      TO_JSON(
        OBJECT_CONSTRUCT_KEEP_NULL(
          'Address', Address,
          'Zip', Zip,
          'State', State
        )
      )
    ), ','
  ) AS json_blocks
FROM example_table_above;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:54:02