如何在Snowflake中用SQL查询Python创建的Snowpark DataFrame并引用mydf
在SQL单元格中引用Snowpark DataFrame的方法
要在SQL里查询Python中创建的mydf Snowpark DataFrame,核心是把DataFrame注册成临时视图或者永久视图,之后就能像普通表一样在SQL中调用。
方法一:注册为会话级临时视图(推荐,仅当前会话有效)
在Python单元格中执行以下代码,把mydf注册成临时视图:
mydf.create_or_replace_temp_view("temp_mydf")
之后在SQL单元格里,直接用视图名temp_mydf查询,甚至关联其他表:
-- 查询临时视图 SELECT * FROM temp_mydf; -- 关联其他表(比如关联名为other_table的表) SELECT t.*, o.other_column FROM temp_mydf t JOIN other_table o ON t.id = o.mydf_id;
临时视图仅在当前Snowpark会话存在,会话结束后自动销毁,不会占用永久存储资源。
方法二:注册为永久视图(跨会话可用)
如果需要在其他会话或后续任务中也能使用这个DataFrame的数据,可以注册成永久视图,需要指定数据库和模式:
# 替换成你的数据库和模式名 mydf.create_or_replace_view("my_db.my_schema.perm_mydf")
然后在SQL单元格中直接调用这个永久视图:
SELECT * FROM my_db.my_schema.perm_mydf;
永久视图会被持久化存储,需要确保你有对应的数据库/模式权限。
注意事项
- 注册视图时,视图名不能和现有表/视图重名,否则会被
create_or_replace_*方法自动替换 - 如果DataFrame包含复杂数据类型(比如数组、结构体),Snowpark会自动映射到Snowflake支持的对应类型,SQL中可以直接使用这些类型的操作语法
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

