Comment on page
FUNCTION
Config path:
/<database>/<schema>/function/<name>(<dtypes>).yaml
Example:
arguments:
input_val: OBJECT
returns: VARCHAR(1000)
body: |-
GET(input_val, COALESCE('BOOKINGS_LANG', 'en'))::varchar(1000)
arguments:
x: VARCHAR(10000)
returns: VARCHAR(255)
language: java
imports:
- stage: test_internal_stage
path: /lib/zero-allocation-hashing-0.15.jar
handler: SnowHash.xxHash
body: |-
import net.openhft.hashing.LongHashFunction;
class SnowHash {
public static LongHashFunction hash_func = LongHashFunction.xx();
public static String xxHash(String x) {
return Long.toHexString(hash_func.hashChars(x));
}
}
language: python
runtime_version: "3.8"
returns: VARIANT
packages:
- numpy
- pandas
- xgboost==1.5.0
handler: udf
body: |-
import numpy as np
import pandas as pd
import xgboost as xgb
def udf():
return [np.__version__, pd.__version__, xgb.__version__]
- language (str) - language of function (default: SQL)
- runtime_version (str) - used to specify version of Python, Java, etc.
- returns (str) - for single return value, return data type --- OR ---
- returns (dict) - for table return values
- {key} (ident) - return column name
- {value} (str) - return column data type
- body (str) - function body
- is_secure (bool) - is function SECURE
- is_strict (bool) - is function STRICT (always returns NULL on NULL input)
- is_immutable (bool) - is function IMMUTABLE (same input always produced the same output)
- is_memoizable (bool)
- imports (list) - files to import (usually JAR packages)
- {items} (dict)
- stage (ident) - name of stage
- path (str) - path to file
- packages (list) - Snowflake system packages to import as dependencies
- {items} (str) - name of package, with optional version of package
- handler (str) - name of class and method to be called
- external_access_integrations (list)
- secrets (dict)
- {key} (str) - secret variable name used in function code
- comment (str)
- 1.Snowflake supports overloading of function names. Multiple functions may have the same name as long as they have different arguments. It is required to use comma-separated base data types of arguments in config names. For example:
my_function(number).yaml
,my_function(varchar,number).yaml
- 2.
- 3.If function
body
is empty,handler
andimports
with pre-compiled JAR or Python code are required. - 4.
runtime_version
should be specified as string with explicit double-quotes (e.g."3.8"
). Otherwise YAML parser may confuse it with number, which may cause some unwanted effects. - 5.You may use custom YAML tag
!include
to store function body in a separate file instead of storing it inside YAML.
Last modified 7d ago