snowflake.snowpark.udf.UDFRegistration.register_from_fileΒΆ
- UDFRegistration.register_from_file(file_path: str, func_name: str, return_type: Optional[DataType] = None, input_types: Optional[List[DataType]] = None, name: Optional[Union[str, Iterable[str]]] = None, is_permanent: bool = False, stage_location: Optional[str] = None, imports: Optional[List[Union[str, Tuple[str, str]]]] = None, packages: Optional[List[Union[str, module]]] = None, replace: bool = False, if_not_exists: bool = False, parallel: int = 4, strict: bool = False, secure: bool = False, external_access_integrations: Optional[List[str]] = None, secrets: Optional[Dict[str, str]] = None, immutable: bool = False, comment: Optional[str] = None, copy_grants: bool = False, *, statement_params: Optional[Dict[str, str]] = None, source_code_display: bool = True, skip_upload_on_content_match: bool = False) UserDefinedFunction [source]ΒΆ
Registers a Python function as a Snowflake Python UDF from a Python or zip file, and returns the UDF. Apart from
file_path
andfunc_name
, the input arguments of this method are the same asregister()
. See examples inUDFRegistration
.- Parameters:
file_path β The path of a local file or a remote file in the stage. See more details on
path
argument ofsession.add_import()
. Note that unlikepath
argument ofsession.add_import()
, here the file can only be a Python file or a compressed file (e.g., .zip file) containing Python modules.func_name β The Python function name in the file that will be created as a UDF.
return_type β A
DataType
representing the return data type of the UDF. Optional if type hints are provided.input_types β A list of
DataType
representing the input data types of the UDF. Optional if type hints are provided.name β A string or list of strings that specify the name or fully-qualified object identifier (database name, schema name, and function name) for the UDF in Snowflake, which allows you to call this UDF in a SQL command or via
call_udf()
. If it is not provided, a name will be automatically generated for the UDF. A name must be specified whenis_permanent
isTrue
.is_permanent β Whether to create a permanent UDF. The default is
False
. If it isTrue
, a validstage_location
must be provided.stage_location β The stage location where the Python file for the UDF and its dependencies should be uploaded. The stage location must be specified when
is_permanent
isTrue
, and it will be ignored whenis_permanent
isFalse
. It can be any stage other than temporary stages and external stages.imports β A list of imports that only apply to this UDF. You can use a string to represent a file path (similar to the
path
argument inadd_import()
) in this list, or a tuple of two strings to represent a file path and an import path (similar to theimport_path
argument inadd_import()
). These UDF-level imports will override the session-level imports added byadd_import()
. Note that an empty list means no import for this UDF, andNone
or not specifying this parameter means using session-level imports.packages β A list of packages that only apply to this UDF. These UDF-level packages will override the session-level packages added by
add_packages()
andadd_requirements()
. Note that an empty list means no package for this UDF, andNone
or not specifying this parameter means using session-level packages. To use Python packages that are not available in Snowflake, refer tocustom_package_usage_config()
.replace β Whether to replace a UDF that already was registered. The default is
False
. If it isFalse
, attempting to register a UDF with a name that already exists results in aSnowparkSQLException
exception being thrown. If it isTrue
, an existing UDF with the same name is overwritten.if_not_exists β Whether to skip creation of a UDF when one with the same signature already exists. The default is
False
.if_not_exists
andreplace
are mutually exclusive and aValueError
is raised when both are set. If it isTrue
and a UDF with the same signature exists, the UDF creation is skipped.parallel β The number of threads to use for uploading UDF files with the PUT command. The default value is 4 and supported values are from 1 to 99. Increasing the number of threads can improve performance when uploading large UDF files.
strict β Whether the created UDF is strict. A strict UDF will not invoke the UDF if any input is null. Instead, a null value will always be returned for that row. Note that the UDF might still return null for non-null inputs.
secure β Whether the created UDF is secure. For more information about secure functions, see Secure UDFs.
statement_params β Dictionary of statement level parameters to be set while executing this action.
source_code_display β Display the source code of the UDF func as comments in the generated script. The source code is dynamically generated therefore it may not be identical to how the func is originally defined. The default is
True
. If it isFalse
, source code will not be generated or displayed.skip_upload_on_content_match β When set to
True
and a version of source file already exists on stage, the given source file will be uploaded to stage only if the contents of the current file differ from the remote file on stage. Defaults toFalse
.external_access_integrations β The names of one or more external access integrations. Each integration you specify allows access to the external network locations and secrets the integration specifies.
secrets β The key-value pairs of string types of secrets used to authenticate the external network location. The secrets can be accessed from handler code. The secrets specified as values must also be specified in the external access integration and the keys are strings used to retrieve the secrets using secret API.
immutable β Whether the UDF result is deterministic or not for the same input.
comment β Adds a comment for the created object. See COMMENT
copy_grants β Specifies to retain the access privileges from the original function when a new function is created using CREATE OR REPLACE FUNCTION.
- Note::
The type hints can still be extracted from the local source Python file if they are provided, but currently are not working for a zip file or a remote file. Therefore, you have to provide
return_type
andinput_types
whenpath
points to a zip file or a remote file.
See also