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

Snowflake中varchar列parse_json报unknown keyword "None"问题咨询

问题描述

我已将如下数据行导入至目标表的varchar类型列 breakdown 中:

[{'platform': 'facebook', 'total': 20701, 'likes': 10106, 'shares': 3774, 'comments': 6168, 'tweets': None, 'favorites': None, 'hahas': 375, 'wows': 164, 'loves': 31, 'sads': 21, 'angrys': 62}]

[{'platform': 'facebook', 'total': 15958, 'likes': 7206, 'shares': 2931, 'comments': 541, 'tweets': None, 'favorites': None, 'hahas': 62, 'wows': 852, 'loves': 145, 'sads': 1968, 'angrys': 2253}]

执行如下SQL尝试将列内存储的字典拆解为独立字段时,出现解析报错:

with org_table as (
  select
loaded_date,
parse_json(breakdown) as CUSTOM_FIELDS
from my_table)
select
CUSTOM_FIELDS:platform::string as platform
from org_table

报错信息如下:

Error parsing JSON: unknown keyword "None", pos 107

当前该表使用的文件格式配置如下,咨询是否可以通过调整该配置解决上述问题:

"type": 'csv',
"field_delimiter": ',',
"EMPTY_FIELD_AS_NULL": True,
'escape_unenclosed_field': None,
'date_format': 'YYYY-MM-DD',
'skip_header': 1,
'escape': 'None',
'FIELD_OPTIONALLY_ENCLOSED_BY': '"',
'error_on_column_count_mismatch': False,
'NULL_IF': ('NULL', '', ' ', 'NULL', 'NULL', '//N', '\N'),
'RECORD_DELIMITER': '\n'
解答

调整建表时的CSV文件格式配置无法解决这个问题。

  • 报错根源是存入breakdown列的内容不是标准JSON:标准JSON要求空值写为小写null、字符串必须使用双引号包裹,当前导入的内容是Python字典的字符串输出结果,用单引号包裹字符串、用Python专属的None表示空值,parse_json仅能识别标准JSON语法,因此抛出未知关键字错误。
  • CSV文件格式配置仅在数据导入阶段的字段切分、转义处理、空值识别环节生效,不会自动修改已经写入varchar列的字符串内容,也不具备自动将Python字典格式转换为标准JSON的能力。
  • 可通过以下两种方案修复问题:
    • 源端预处理:导入数据前先将源内容里的单引号替换为双引号、None替换为null,转换为标准JSON格式后再入库,后续可直接正常解析。
    • SQL侧预处理后解析:调用parse_json前先替换字符串中的非法JSON语法,另外注意存储的内容是数组包裹的字典,取字段时需要加数组下标,参考SQL如下:
      with org_table as (
        select
        loaded_date,
        parse_json(
          replace(replace(breakdown, '\'', '"'), 'None', 'null')
        ) as CUSTOM_FIELDS
        from my_table)
      select
      CUSTOM_FIELDS[0]:platform::string as platform
      from org_table
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:57:12