如何通过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
相关产品推荐
相关产品推荐

