arguments (для функций)
functions:
- name: <function name>
arguments:
- name: <arg name>
data_type: <string> # зависит от хранилища данных
description: <markdown_string>
default_value: <string | boolean | integer> # опционально, доступно в Snowflake и Postgres
Определение
Свойство arguments используется для определения параметров, которые может принимать ресурс. Каждый аргумент может иметь поле name, поле с типом, а также необязательные свойства, такие как description и default_value.
Для functions вы можете добавить свойство arguments к свойствам функции. Оно определяет параметры пользовательских функций (UDF) в вашем хранилище данных. Поле data_type для аргументов функции зависит от конкретного хранилища (например, STRING, VARCHAR, INTEGER) и должно соответствовать типам данных, поддерживаемым вашей платформой данных.
Свойства
name
Имя аргумента. Это обязательное поле, если указано свойство arguments.
data_type
Тип данных, который ожидает хранилище для данного параметра. Это обязательное поле, если указано свойство arguments, и оно должно соответствовать типам данных, поддерживаемым вашей конкретной платформой данных.
Значения data_type зависят от конкретного хранилища. Используйте синтаксис типов данных, который требуется вашим хранилищем:
- Snowflake:
STRING,NUMBER,BOOLEAN,TIMESTAMP_NTZи т.д. - BigQuery:
STRING,INT64,BOOL,TIMESTAMP,ARRAY<STRING>и т.д. - Redshift:
VARCHAR,INTEGER,BOOLEAN,TIMESTAMPи т.д. - Postgres:
TEXT,INTEGER,BOOLEAN,TIMESTAMPи т.д.
Полный список поддерживаемых типов данных смотрите в документации вашего хранилища.
description
Необязательная строка в формате markdown, описывающая аргумент. Полезно для целей документации.
default_value
Используйте свойство default_value, чтобы сделать аргумент функции необязательным.
- Если аргумент не определён с помощью
default_value, он становится обязательным, и при использовании функции вы должны передать для него значение. Если обязательный аргумент не передан, вызов функции завершится ошибкой. - Аргументы с
default_valueявляются необязательными — если вы не передадите значение для такого аргумента, хранилище использует значение, указанное вdefault_value.
Это свойство поддерживается в Snowflake и Postgres.
При использовании default_value порядок аргументов имеет значение. Все обязательные аргументы (то есть аргументы без значений по умолчанию) должны идти перед необязательными. Ниже приведён пример с корректным порядком:
functions:
- name: sum_2_values
description: Add two values together
arguments:
- name: val1 # this argument comes first because it has no default value
data_type: integer
description: The first value
- name: val2
data_type: integer
description: The second value
default_value: 0
returns:
data_type: integer
В этом примере:
val1не имеетdefault_value, поэтому является обязательным.val2имеетdefault_value, равный0, поэтому является необязательным. Если вы не передадите значение дляval2, функция использует0.
Ниже приведены примеры вызова функции sum_2_values:
sum_2_values(5) # val1 = 5, val2 = 0 (используется значение по умолчанию, так как пользователь не указал val2)
sum_2_values(5, 10) # val1 = 5, val2 = 10
sum_2_values() # ❌ ошибка: val1 является обязательным и должен быть передан
Примеры
Простые аргументы функций
functions:
- name: is_positive_int
arguments:
- name: a_string
data_type: string
description: "The string that I want to check if it's representing a positive integer (like '10')"
returns:
data_type: boolean
Сложные типы данных
functions:
- name: calculate_discount
arguments:
- name: original_price
data_type: DECIMAL(10,2)
description: "The original price before discount"
- name: discount_percent
data_type: INTEGER
description: "The discount percentage to apply"
returns:
data_type: DECIMAL(10,2)
description: "The discounted price"
Типы данных Array (пример для BigQuery)
functions:
- name: get_tags
arguments:
- name: tag_string
data_type: STRING
description: "Comma-separated string of tags"
returns:
data_type: ARRAY<STRING>
description: "An array of individual tag strings"