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

GCP BigQuery中如何将字典格式字符串转换为STRUCT类型

GCP BigQuery 字符串格式JSON字典转STRUCT方法

你可以通过「字符串解析为原生JSON类型 + 显式类型映射」的方式实现转换,针对你给出的示例场景,直接运行如下SQL即可得到STRUCT类型结果:

WITH sample_data AS (
  SELECT '{"ID": "A", "QualifierID": "XYZ", "text": "Origin"}' AS dict_str
)
SELECT
  CAST(
    PARSE_JSON(dict_str)
    AS STRUCT<ID STRING, QualifierID STRING, text STRING>
  ) AS converted_struct
FROM sample_data

关键说明

  • 核心逻辑分两步:首先用PARSE_JSON函数把JSON格式的字符串解析为BigQuery原生支持的JSON类型,再通过CAST显式声明目标STRUCT的字段结构,直接完成类型转换。
  • 如果待转换的字符串可能存在格式不合法的脏数据,把PARSE_JSON替换为SAFE.PARSE_JSON即可,解析失败时会返回NULL,不会导致整个SQL任务报错中断。
  • 定义STRUCT结构时,字段名必须和JSON字典里的键名完全一致,字段类型要和JSON里对应值的类型匹配:
    • 字符串值对应STRING类型
    • 整数值对应INT64类型
    • 浮点值对应FLOAT64类型
    • 嵌套字典可以对应嵌套定义的STRUCT类型,数组对应ARRAY类型
  • 如果你的BigQuery版本暂不支持原生JSON类型,可以手动提取每个字段组装STRUCT,示例写法如下:
WITH sample_data AS (
  SELECT '{"ID": "A", "QualifierID": "XYZ", "text": "Origin"}' AS dict_str
)
SELECT
  STRUCT(
    JSON_EXTRACT_SCALAR(dict_str, '$.ID') AS ID,
    JSON_EXTRACT_SCALAR(dict_str, '$.QualifierID') AS QualifierID,
    JSON_EXTRACT_SCALAR(dict_str, '$.text') AS text
  ) AS converted_struct
FROM sample_data
  • 转换完成后的STRUCT可以直接通过结构体名.字段名的格式访问内部字段,和原生定义的STRUCT使用逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:48:34