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

如何通过SQLContext访问含Struct类型列的Polars DataFrame字段?

解决Polars SQLContext中访问Struct字段的报错问题

问题出在Polars SQL语法对Struct字段的访问方式上,你当前使用的.操作符会被解析器误认为是表/别名与列的关联,从而触发no table or alias named 'json_message' found错误。

Polars SQLContext访问Struct子字段需要使用->操作符,修改你的SQL查询语句即可解决:

pl_sql_query = """
select json_message->'id' as id, json_message->'name' as name 
from tbl1 
where json_message->'id' in (select id from tbl2)
"""

如果需要更明确的表限定以避免歧义,也可以写成:

pl_sql_query = """
select tbl1.json_message->'id' as id, tbl1.json_message->'name' as name 
from tbl1 
where tbl1.json_message->'id' in (select id from tbl2)
"""

补充说明

如果你的Polars版本较新(>=0.20.0),也可以使用.操作符,但需要将Struct列用括号包裹,以此明确告诉解析器json_message是一个列而非表:

pl_sql_query = """
select (json_message).id as id, (json_message).name as name 
from tbl1 
where (json_message).id in (select id from tbl2)
"""

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:12:36