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

Spark SQL中提取键为URL的嵌套JSON键值对方法求助

Spark SQL提取URL格式键的JSON值方案

方法一:直接使用get_json_object指定完整URL键

如果已经通过get_json_object提取到keyContextValue并存储为列(比如命名为key_context_value),可以直接在JSON路径中用双引号包裹URL格式的键,SQL中用单引号包裹整个路径字符串,实现精准提取:

SELECT
  keyId,
  -- 提取原始时间字符串
  get_json_object(key_context_value, '$."https://access.dummy.com/training/date/last_modified_dtm"') AS last_modified_dtm,
  -- 转换为仅日期格式(符合需求中的2024-02-01)
  date(get_json_object(key_context_value, '$."https://access.dummy.com/training/date/last_modified_dtm"')) AS last_modified_date,
  get_json_object(key_context_value, '$."https://access.dummy.com/training/id/training_id"') AS training_id,
  get_json_object(key_context_value, '$."https://access.dummy.com/training/name/training_name"') AS training_name
FROM your_table_name

方法二:转换为Map类型后提取(更灵活)

如果需要处理较多URL格式的键,或者需要动态访问,可以先将key_context_value转为Map<String, String>类型,再通过键名直接取值:

SELECT
  keyId,
  -- 提取原始时间
  key_context_map["https://access.dummy.com/training/date/last_modified_dtm"] AS last_modified_dtm,
  -- 转换为日期格式
  date(key_context_map["https://access.dummy.com/training/date/last_modified_dtm"]) AS last_modified_date,
  key_context_map["https://access.dummy.com/training/id/training_id"] AS training_id,
  key_context_map["https://access.dummy.com/training/name/training_name"] AS training_name
FROM (
  -- 子查询中将JSON字符串转为Map类型
  SELECT
    keyId,
    from_json(key_context_value, map<string, string>) AS key_context_map
  FROM your_table_name
) temp_table

注意事项

  • 替换your_table_name为实际表名,key_context_value为你已提取的keyContextValue列名。
  • date()函数用于将带时间的字符串转换为纯日期格式,若不需要可以直接使用原始提取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 23:20:01