Валидация аргументов макросов
| validate_macro_args | dbt v1 Latest | dbt v1 |
|---|---|---|---|
| Добавлен | 2025.03 | 1.10.0 |
| Стабилизирован (по умолчанию → true) | 2026.09 | 1.12.0 |
| Удалён | — | — |
dbt проверяет аргументы макросов с помощью флага validate_macro_args. Начиная с dbt v1.12, значение этого флага по умолчанию — true.
Раньше dbt не требовал использовать стандартный набор значений для поля type у аргументов макросов в YAML. Поэтому поле type использовалось только для документации, и dbt не проверял, что:
- имена аргументов совпадают с именами в макросе
- типы аргументов допустимы и соответствуют определению макроса на Jinja
Ниже приведён пример документированного макроса:
macros:
- name: <macro name>
arguments:
- name: <arg name>
type: <string>
Когда этот флаг включён (по умолчанию), dbt:
- Проверяет аргументы макросов при разборе проекта.
- Проверяет, что все имена аргументов в YAML совпадают с именами в определении макроса.
- Выдаёт предупреждения, если имена или типы не совпадают.
- Проверяет, что значения
typeсоответствуют поддерживаемому формату. - Если в YAML не задокументированы аргументы, определяет их по макросу и включает в файл
manifest.json.
Влияние
Сам по себе этот флаг приводит лишь к выдаче предупреждений, и сборки продолжаются. Однако эти предупреждения проходят через механизм принудительной обработки и учитывают --warn-error, поэтому в проектах с установленным --warn-error сборки будут завершаться с ошибкой на этапе разбора.
Это затрагивает проекты, в которых аргументы arguments:, перечисленные в YAML-описании макроса, больше не соответствуют фактической сигнатуре макроса на Jinja. В таких проектах каждая команда завершается с ошибкой на этапе разбора, пока вы не обновите аргументы в YAML в соответствии с макросом или не удалите блок arguments: целиком.