【问题标题】:Why can't I create a temporary view in Snowflake through the Snowpark API?为什么我不能通过 Snowpark API 在 Snowflake 中创建临时视图?
【发布时间】:2022-10-05 03:13:30
【问题描述】:

我希望使用 Snowpark API(版本1.6.0)在雪花上创建一个临时视图。我创建了一个DataFrame 并尝试使用createOrReplaceTempView() 函数,如下所示:

  // code to create dataframe here
  finalDF.createOrReplaceTempView(outputTableName)

当我运行此代码时,我看到以下错误:

net.snowflake.client.jdbc.SnowflakeSQLException: Stored procedure execution error: Unsupported statement type 'temporary VIEW'.

在我的 Snowflake 帐户中的工作表上,我能够通过原始 SQL 成功创建同一个表。

任何想法为什么我不能通过 Snowpark 做同样的事情?

【问题讨论】:

  • 可能是因为 Snowflake 中没有临时视图这样的东西
  • @NickW “可能是因为雪花中没有临时视图” - CREATE OR REPLACE TEMPORARY VIEW vw AS SELECT 1 c; -- View VW successfully created. 可以在雪花中创建临时视图。
  • 看起来 Snowflake 有一个文档问题,然后,因为这里没有涵盖此选项docs.snowflake.com/en/sql-reference/sql/create-view.html
  • @NickW 这记录在Snowpark 部分,也可以在 Snowpark API 文档中找到。
  • 罗汉,变量的值是多少输出表名?我刚刚使用 Snowpark 1.6.0 做了一个快速测试,createOrReplaceTempView 对我来说很好,我什至可以在查询历史记录中看到 SQL。

标签: scala snowflake-cloud-data-platform snowpark


【解决方案1】:

从错误消息中,我了解到您正在运行存储过程。默认情况下,如果未指定存储过程,则以所有者权限运行,这会阻止临时对象的创建。因此,通过添加来使用调用者的权限作为调用者执行存储过程中的语句。

例如:

CREATE or replace PROCEDURE sample_proc(
)
RETURNS VARCHAR
...
...
EXECUTE AS CALLER
AS 

【讨论】:

    猜你喜欢
    • 2023-02-21
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 2022-08-22
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    相关资源
    最近更新 更多