Databricks SQL如何查询存储为字符串的嵌套JSON字段appName
纯SQL提取JSON字符串中字段的解决方案
由于additional_data.content是存储JSON格式字符串的字段,无法直接以Struct类型的方式访问,必须通过JSON解析函数处理后提取appName,以下是主流SQL引擎的实现方式:
Spark SQL / Hive SQL
使用get_json_object函数指定JSON路径提取:
SELECT get_json_object(additional_data.content, '$.appName') AS appName FROM your_table;
若需要提取多个字段,json_tuple更高效:
SELECT json_tuple(additional_data.content, 'appName') AS appName FROM your_table;
PostgreSQL
先将字符串转为JSON类型,再提取字段:
-- 使用函数方式 SELECT json_extract_path_text(additional_data.content::json, 'appName') AS appName FROM your_table; -- 简洁操作符方式 SELECT (additional_data.content::json)->>'appName' AS appName FROM your_table;
MySQL
使用JSON提取函数或操作符:
-- 函数写法 SELECT JSON_EXTRACT(additional_data.content, '$.appName') AS appName FROM your_table; -- 直接返回字符串的操作符写法 SELECT additional_data.content->>'$.appName' AS appName FROM your_table;
核心说明
你之前的尝试失败是因为误将存储JSON的字符串当作Struct类型直接访问,必须先通过JSON解析函数将字符串转换为可遍历的JSON结构,才能提取目标字段。以上所有方案均为纯SQL实现,无需修改原表结构或使用DataFrame相关API。
内容的提问来源于stack exchange,提问作者Saugat Mukherjee
相关产品推荐
相关产品推荐

