是否可以在 Snowflake Snowpark 中的 Python UDF 中编写 SQL 查询?

use*_*172 3 python sql user-defined-functions snowflake-cloud-data-platform

我正在尝试在雪花中创建一个新的 UDF 函数。在此 UDF 中,我需要编写一个 SQL 查询来返回表列表,然后我需要围绕它执行一些 Python 代码,如下例所示:

create or replace function SnowparkPrivateSchema()
returns string
language python
runtime_version=3.8
handler='SnowparkPrivateSchema'
as $$
def SnowparkPrivateSchema(self, symbol, quantity, price):
   get_tables = '''select table_name from  INFORMATION_SCHEMA.TABLES'''
   for table in get_tables:
      '''create or replace table clone_user.{table} clone {table}'''

$$;
Run Code Online (Sandbox Code Playgroud)

小智 5

您无法在 Snowflake UDF 内部执行 SQL(对于 Python/Snowpark 以及标准 SQL、Javascript 等也是如此)。UDF 只能接收一行数据,并从该输入输出一个标量值。

可以从 Snowpark Python 存储过程(以及使用任何其他语言编写的存储过程)执行 SQL;Python 存储过程可用于执行 SQL,就像 SQL 存储过程一样,包括可能调用 UDF 对 SQL 查询返回的数据执行某些操作。