Конфигурации функций
Доступные конфигурации
Конфигурации, специфичные для функций
Конфигурации, специфичные для ресурса, применимы только к одному типу ресурса dbt, а не к нескольким типам ресурсов. Вы можете определить эти настройки в файле проекта (dbt_project.yml), в файле свойств (models/properties.yml для моделей, аналогично для других ресурсов) или внутри файла ресурса, используя макрос {{ config() }}.
Следующие конфигурации, специфичные для ресурса, доступны только для Functions:
- YAML-файл проекта
- YAML-файл свойств
functions:
<resource-path>:
# Конфигурации, специфичные для функций, задаются в properties YAML файле
# См. примеры functions/schema.yml ниже
functions:
- name: [<function-name>]
config:
type: scalar # необязательно, по умолчанию scalar. В будущем появятся aggregate | table
volatility: deterministic | stable | non-deterministic # необязательно
runtime_version: <string> # обязательно для Python UDF
entry_point: <string> # обязательно для Python UDF
# Стандартные конфигурации, применимые к функциям
database: <string>
schema: <string>
alias: <string>
tags: <string> | [<string>]
meta: {<dictionary>}
Общие конфигурации
Общие конфигурации предоставляют более широкие операционные настройки, применимые к нескольким типам ресурсов. Как и конфигурации, специфичные для ресурсов, они также могут быть заданы в файле проекта, файлах свойств или в файлах, специфичных для ресурсов.
Функции поддерживают конфигурации database, schema и alias так же, как и модели. Они определяют, где именно функция будет создана в вашем хранилище данных. Для функций применяется стандартный приоритет конфигураций dbt (более специфичная конфигурация > конфигурация проекта > значения по умолчанию из target-профиля).
- Project YAML file
- Properties YAML file
Настройка функций
Функции настраиваются в YAML-файлах — либо в dbt_project.yml, либо в индивидуальном properties YAML файле конкретной функции. Тело функции при этом определяется в SQL-файле, расположенном в директории functions/.
Конфигурации функций, как и конфигурации моделей, применяются иерархически. Подробнее см. в разделе наследование конфигураций.
Функции используют те же макросы генерации имён, что и модели: generate_database_name, generate_schema_name и generate_alias_name.
Примеры
Применение конфигурации schema ко всем функциям
Чтобы применить конфигурацию ко всем функциям, включая функции из любых установленных пакетов, вложите конфигурацию непосредственно под ключ functions:
functions:
+schema: udf_schema
Применение конфигурации schema ко всем функциям в вашем проекте
Чтобы применить конфигурацию только к функциям вашего проекта (то есть исключая функции из установленных пакетов), укажите имя проекта как часть пути ресурса.
Для проекта с именем jaffle_shop:
functions:
jaffle_shop:
+schema: udf_schema
Аналогичным образом можно использовать имя установленного пакета, чтобы настраивать функции в этом пакете.
Применение конфигурации schema только к одной функции
Чтобы применить конфигурацию только к одной функции в properties файле, укажите её в блоке config этой функции:
functions:
- name: is_positive_int
config:
schema: udf_schema
Чтобы применить конфигурацию только к одной функции в dbt_project.yml, укажите полный путь ресурса (включая имя проекта и поддиректории). Для проекта с именем jaffle_shop и файлом функции functions/is_positive_int.sql:
functions:
jaffle_shop:
is_positive_int:
+schema: udf_schema
Пример конфигурации функций
Следующий пример показывает, как настроить функции в проекте с именем jaffle_shop, в котором есть два файла функций:
functions/is_positive_int.sqlfunctions/marketing/clean_url.sql
name: jaffle_shop
...
functions:
jaffle_shop:
+enabled: true
+schema: udf_schema
# Эта конфигурация применяется к functions/is_positive_int.sql
is_positive_int:
+tags: ['validation']
marketing:
+schema: marketing_udfs # это значение будет иметь приоритет
functions:
- name: is_positive_int
description: Определяет, представляет ли строка положительное целое число
config:
type: scalar
volatility: deterministic
database: analytics
schema: udf_schema
arguments:
- name: a_string
data_type: string
description: Строка для проверки
returns:
data_type: boolean
description: Возвращает true, если строка представляет положительное целое число