英文:
Snowpark table creation failing even query executed successfully
问题
我正在尝试在Snowpark中使用参数化值从另一个表创建表格
CREATE OR REPLACE PROCEDURE table_merge(DB varchar, SCHEMA varchar, TARGET_TABLE varchar, SRC_TABLE varchar)
RETURNS STRING
LANGUAGE PYTHON
RUNTIME_VERSION = '3.8'
PACKAGES = ('snowflake-snowpark-python')
HANDLER = 'table_merge'
AS
$$
from snowflake.snowpark.functions import when_matched
def table_merge(session, DB, SCHEMA, TARGET_TABLE, SRC_TABLE):
session.use_database(DB)
session.use_schema(SCHEMA)
session.sql(f"CREATE TABLE {DB}.{SCHEMA}.{TARGET_TABLE} LIKE {DB}.{SCHEMA}.{SRC_TABLE}")
table_count = session.sql(f"SHOW TABLES LIKE {TARGET_TABLE}")
return table_count.count()
$$;
表格未创建,并且结果返回0。当我单独运行查询时,甚至看不到表格。有解决方法吗?
英文:
I am trying to create a table from other table in snowpark using parameterized value
CREATE OR REPLACE PROCEDURE table_merge(DB varchar,SCHEMA varchar,TARGET_TABLE varchar, SRC_TABLE varchar)
RETURNS STRING
LANGUAGE PYTHON
RUNTIME_VERSION = '3.8'
PACKAGES = ('snowflake-snowpark-python')
HANDLER = 'table_merge'
AS
$$
from snowflake.snowpark.functions import when_matched
def table_merge(session,DB,SCHEMA,TARGET_TABLE, SRC_TABLE ):
session.use_database(DB)
session.use_schema(SCHEMA)
session.sql(f"CREATE TABLE {DB}.{SCHEMA}.{TARGET_TABLE} LIKE {DB}.{SCHEMA}.{SRC_TABLE}")
table_count = session.sql(f"SHOW TABLES LIKE {TARGET_TABLE}")
return table_count.count()
$$;
The table is not creating and the result return 0. i even didn't see the table when i ran query alone
Any solution to this?
答案1
得分: 0
是的,我最终得到了使用Snowpark API创建永久表而不使用会话的答案。
source_table_df.write.mode("overwrite").save_as_table("my_new_table")
英文:
Yea i got the answer finally for creating a permanent table using snowpark API without using session
source_table_df.write.mode("overwrite").save_as_table("my_new_table")
答案2
得分: 0
source_table_df.write.mode("overwrite").save_as_table("my_new_table")
这种模式,overwrite
,用于用新数据替换现有表的内容。如果表不存在,它将创建一个具有指定名称的新表。如果表已存在,则将表中的所有数据替换为新数据。
并没有明确指定必须是表的所有者,但根据我们的经验,似乎需要是表的所有者。
参考链接:https://medium.com/snowflake/snowpark-with-python-part-3-afef7071928d
<details>
<summary>英文:</summary>
source_table_df.write.mode("overwrite").save_as_table("my_new_table")
This mode, `overwrite`, is used to replace the contents of an existing table with the new data. If the table does not exist, it will create a new table with the given name. If the table exists, it replaces all the data in the table with the new data.
It does not specify anywhere I can find that you must be the table owner, but that is how we are experiencing it.
Reference: https://medium.com/snowflake/snowpark-with-python-part-3-afef7071928d
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论