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

如何在Snowflake中从JSON Variant提取值并加载至其他表

问题解决方法

你的问题出在每个字段(比如Appointment Date)的值是转义后的JSON字符串,并非原生的JSON对象,直接用.value无法识别,所以返回null。需要先把这个字符串解析为JSON对象,再提取对应值。

1. 直接查询提取值

使用PARSE_JSON()函数将字符串转为Variant类型,再提取value字段:

SELECT
  PARSE_JSON(JSON_DATA:"Appointment Date"):value AS "Appointment Date",
  PARSE_JSON(JSON_DATA:"Appointment ID"):value AS "Appointment ID",
  PARSE_JSON(JSON_DATA:"Appointment Remark"):value AS "Appointment Remark"
FROM xyz.abc.CAN_IB_SCHEDULING_test;

该查询会返回你期望的结果:

Appointment DateAppointment IDAppointment Remark
2023-06-07MSKW000001Carrier Requested

2. 将提取后的数据加载到新表

如果要把提取结果存入另一张表,可使用CREATE TABLE AS语句:

CREATE OR REPLACE TABLE xyz.abc.CAN_IB_SCHEDULING_CLEANED AS
SELECT
  PARSE_JSON(JSON_DATA:"Appointment Date"):value::DATE AS "Appointment Date",
  PARSE_JSON(JSON_DATA:"Appointment ID"):value::STRING AS "Appointment ID",
  PARSE_JSON(JSON_DATA:"Appointment Remark"):value::STRING AS "Appointment Remark",
  PARSE_JSON(JSON_DATA:"Appointment Insert Date"):value::TIMESTAMP AS "Appointment Insert Date"
FROM xyz.abc.CAN_IB_SCHEDULING_test;

这里可以根据实际需求给字段指定对应的类型(比如DATE、TIMESTAMP),确保数据类型准确。

额外说明

如果后续要避免这种嵌套字符串的问题,可以检查S3中的原始JSON数据格式,确保字段值是原生JSON对象而非转义后的字符串;或者在COPY INTO时,通过文件格式参数调整解析逻辑,但当前场景下用PARSE_JSON()是最直接的修复方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:15:09