代码包规范¶
此规范定义了一个或多个可由模板调用的代码函数或过程的捆绑包。
一个代码包规范最多可以包含 5 个函数和过程。
有关不同类型代码包的示例,请参阅 示例规范。
代码包规范中的标识符具有以下一般要求:
名称:必须是以字母开头、仅包含字母数字字符和下划线的有效 Snowflake 标识符。
带引号的标识符:包含特殊字符的名称支持使用双引号标识符。
区分大小写:不带引号的标识符不区分大小写;带引号的标识符保留大小写。
api_version所使用的 Collaboration API 的版本。必须是
2.0.0spec_type规范类型标识符。必须是
code_specname: identifier此注册表中该代码包规范的唯一名称。必须是有效的 Snowflake 标识符,且最多 75 个字符。在模板中调用函数时,这将用作名称的最后一段:
cleanroom.code_spec_name$function_nameversion: version_id自定义版本标识符。必须是带下划线的字母数字,最多 20 个字符。
- :samp:`description: {description_text}`(可选)
代码包规范的描述(最多 1,000 个字符)。
- ``artifacts``(可选)
可由您的函数或过程导入的暂存文件或包列表,并 可以选择通过处理程序函数公开。每个规范最多 5 个。
alias: identifier用于在导入中引用此工件的别名。在本规范中引用此别名时,请使用裸别名而不是
cleanroom.spec_name$alias;也就是说,使用裸函数名称来引用本规范中的另一个函数。stage_path: stage_path工件文件的完整暂存区路径。例如
@DB.SCHEMA.STAGE/path/file.whl。
暂存区必须是内部暂存区。 不支持外部暂存区。
暂存区必须启用 DIRECTORY:包含工件的暂存区必须设置
DIRECTORY = TRUE。暂存区路径格式:必须遵循
@[DB.]SCHEMA.STAGE/path/to/file.ext格式。无路径遍历:暂存区路径不能包含
..或\。此工件必须存在:注册代码包时,该文件必须存在于指定的暂存区路径中。
暂存区必须启用 SNOWFLAKE_SSE 服务端加密。 创建或更改暂存区时,请设置
ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE')。如果您推送、删除或更新暂存的代码文件, 则必须调用
ALTER STAGE stage name REFRESH以确保协作拥有来自暂存区的最新信息。仅在注册代码规范之前支持代码更新,因为此时会分配版本并计算哈希校验和。
functions(如果未定义过程,则为必填项)UDF 或 UDTF 定义的列表。
name: identifier要向调用模板公开的函数名称。必须是有效的 Snowflake 标识符。
type函数类型。
UDF或UDTF之一。language函数语言。目前仅支持
PYTHON。- :samp:`runtime_version: {python_version}`(可选)
要使用的 Python 运行时版本。支持的版本:
3.10到3.14。handler: handler调用
name时要在函数代码中调用的处理程序函数名称。- ``arguments``(可选)
以名称-类型对列表形式表示的函数实参。类型必须是有效的 Snowflake SQL 类型。
returns: sql_type返回类型。对于 UDFs,请使用 SQL 类型,例如 STRING 或 FLOAT。对于 UDTFs,请使用
TABLE(column_definitions)。- ``packages``(可选)
此代码使用的包列表。这可以是 这些 Anaconda Python 包 (https://repo.anaconda.com/pkgs/snowflake/) 或 这些 Snowpark API 包 中的任何一个。例如:
snowflake-snowpark-python,numpy。- ``imports``(可选)
要导入的工件列表。这些必须是本规范中工件列表中的别名。
- ``code_body``(可选)
内联 Python 代码。与暂存导入互斥。最大大小为 12 MB。
- :samp:`description: {description_text}`(可选)
函数的描述(最多 500 个字符)。
procedures(如果未定义函数,则为必填项)存储过程定义列表。字段与
functions类似,但没有type字段。