О переменной config
Переменная config существует для обработки конфигурации конечного пользователя для пользовательских материализаций. Конфигурации, такие как unique_key, могут быть реализованы с использованием переменной config в ваших собственных материализациях.
Например, код в материализации incremental, такой как этот:
{% materialization incremental, default -%}
{%- set unique_key = config.get('unique_key') -%}
...
отвечает за обработку кода модели, который выглядит так:
{{
config(
materialized='incremental',
unique_key='id'
)
}}
Просмотрите Конфигурации моделей для примеров и дополнительной информации о допустимых аргументах.
config.get
Аргументы:
name: Имя конфигурационной переменной (обязательно)default: Значение по умолчанию, которое будет использоваться, если эта конфигурация не предоставлена (необязательно)
Функция config.get используется для получения конфигураций для модели от конечного пользователя. Конфигурации, определенные таким образом, являются необязательными, и может быть предоставлено значение по умолчанию.
Существует 3 случая:
- Конфигурационная переменная существует, она не
None - Конфигурационная переменная существует, она
None - Конфигурационная переменная не существует
metaconfig.get() не возвращает значения из config.meta. Если ключ существует только в meta, config.get() вернёт значение по умолчанию и выдаст предупреждение. Чтобы получить доступ к пользовательским конфигурациям, сохранённым в meta, используйте config.meta_get().
Пример использования:
{% materialization incremental, default -%}
-- Пример без значения по умолчанию. unique_key будет None, если пользователь не предоставит эту конфигурацию
{%- set unique_key = config.get('unique_key') -%}
-- Пример с альтернативным значением. Используйте альтернативу 'id', если конфигурация 'unique_key' предоставлена, но она None
{%- set unique_key = config.get('unique_key') or 'id' -%}
-- Пример со значением по умолчанию. По умолчанию 'id', если конфигурация 'unique_key' не существует
{%- set unique_key = config.get('unique_key', default='id') -%}
-- For custom configs under `meta`, use config.meta_get()
{% set my_custom_config = config.meta_get('custom_config_key') %}
...
config.require
Аргументы:
name: Имя конфигурационной переменной (обязательно)
Функция config.require используется для получения конфигураций для модели от конечного пользователя. Конфигурации, определенные с использованием этой функции, являются обязательными, и их отсутствие приведет к ошибке компиляции.
metaconfig.require() не возвращает значения из config.meta. Если ключ существует только в meta, config.require() вызывает ошибку и выводит предупреждение. Чтобы получить обязательные пользовательские конфигурации, сохранённые в meta, используйте config.meta_require().
Пример использования:
{% materialization incremental, default -%}
{%- set unique_key = config.require('unique_key') -%}
...
config.meta_get
Args:
name: имя переменной конфигурации, которую нужно получить изmeta(обязательно)default: значение по умолчанию, которое будет использовано, если эта конфигурация не задана (опционально)
Функция config.meta_get извлекает пользовательские конфигурации, сохранённые в словаре meta. В отличие от config.get(), эта функция проверяет только config.meta и не приводит к появлению предупреждений о депрекейте.
Используйте эту функцию, когда обращаетесь к пользовательским конфигурациям, которые вы определили в meta в конфигурации модели или ресурса — по сути, это эквивалент вызова config.get('meta').get().
Note that config.meta_get is not yet supported in Python models. In the meantime, Python models should continue using dbt.config.get("meta").get("<key>") to access custom meta configurations. dbt.config.get_meta("<key>") is an alias for dbt.config.get("meta").get("<key>").
Пример использования:
{% materialization custom_materialization, default -%}
-- Retrieve a custom config from meta, returns None if not found
{%- set custom_setting = config.meta_get('custom_setting') -%}
-- Retrieve with a default value
{%- set custom_setting = config.meta_get('custom_setting', default='default_value') -%}
...
Пример конфигурации модели:
models:
- name: my_model
config:
meta:
custom_setting: "my_value"
config.meta_require
Args:
name: имя переменной конфигурации, которую нужно получить изmeta(обязательно)
Функция config.meta_require извлекает пользовательские конфигурации, сохранённые в словаре meta. В отличие от config.require(), эта функция проверяет только config.meta и не приводит к предупреждениям о депрекейте. Если конфигурация не найдена, dbt выбрасывает ошибку компиляции.
Используйте эту функцию, когда необходимо гарантировать наличие пользовательской конфигурации в meta.
Обратите внимание, что config.meta_require пока не поддерживается в Python-моделях.
Пример использования:
{% materialization custom_materialization, default -%}
-- Require a custom config from meta, throws error if not found
{%- set required_setting = config.meta_require('required_setting') -%}
...
Пример конфигурации модели:
models:
- name: my_model
config:
meta:
required_setting: "my_value"