如何在Databricks SQL中正确查询JSON类型列?
Databricks SQL查询JSON列的解决方案
报错原因
你使用的->>是PostgreSQL生态数据库支持的JSON字段提取运算符,Databricks SQL未兼容该语法,因此会抛出语法匹配错误。
推荐查询写法
方法1:使用json_extract_scalar函数(单字段查询首选)
该函数是Databricks官方提供的JSON标量值提取工具,直接适配JSON类型列或JSON格式的字符串列,正确查询语句如下:
SELECT * FROM companies c WHERE json_extract_scalar(c.urls, '$.Website') = '';
- 第一个参数为待查询的JSON列
- 第二个参数为JSON路径表达式,
$.Website代表取JSON顶层的Website属性值
方法2:预解析JSON为STRUCT类型(多字段高频查询首选)
如果需要多次访问urls中的多个JSON属性,可以提前将JSON列解析为结构化STRUCT类型,后续直接通过点运算符访问属性,查询性能更优:
SELECT * FROM companies c WHERE from_json(c.urls, 'STRUCT<Website: STRING, Twitter: STRING>').Website = '';
from_json的第二个参数为自定义的JSON结构,可根据实际业务的JSON字段调整类型定义
以上两种写法都可以正确匹配你提供的示例数据中Website为空字符串的第一条记录。
内容的提问来源于stack exchange,提问作者coderboi
相关产品推荐
相关产品推荐

