# Допустимое имя схемы из generate\_schema\_name

| require\_valid\_schema\_from\_generate\_schema\_name | dbt **v1 Latest** | dbt v1   |
| ---------------------------------------------------- | ----------------- | -------- |
| Добавлен                                             | 2026.1            | 1.12.0a1 |
| Стабилизирован (по умолчанию → `true`)               | —                 | —        |
| Удалён                                               | —                 | —        |

Макрос `generate_schema_name` определяет схему, в которой dbt создаёт модели и другие ресурсы. Возврат значения `null` из этого макроса может привести к недопустимым именам схем и непредсказуемому поведению во время запусков dbt.

Флаг поведения `require_valid_schema_from_generate_schema_name` по умолчанию имеет значение `false`. При значении `false` dbt выдаёт предупреждение [`GenerateSchemaNameNullValueDeprecation`](https://docs.getdbt.tech/reference/deprecations.md#generateschemanamenullvaluedeprecation), когда пользовательский макрос `generate_schema_name` возвращает значение `null`.

Когда `require_valid_schema_from_generate_schema_name` имеет значение `true`, dbt выполняет более строгую проверку и выдаёт ошибку разбора.

Например, если в вашем проекте есть пользовательский макрос `generate_schema_name`, который возвращает `null`:

macros/get\_custom\_schema.sql

```sql
{% macro generate_schema_name(custom_schema_name, node) -%}
    {%- if custom_schema_name is none -%}
        {{ return(none) }}
    {%- else -%}
        {{ custom_schema_name | trim }}
    {%- endif -%}
{%- endmacro %}
```

При поведении по умолчанию dbt выдаёт предупреждение об устаревшем поведении. Когда `require_valid_schema_from_generate_schema_name` имеет значение `true`, dbt выдаёт ошибку.

Чтобы устранить эту проблему, обновите макрос так, чтобы он возвращал допустимое имя схемы (в этом примере — `target.schema`):

macros/get\_custom\_schema.sql

```sql
{% macro generate_schema_name(custom_schema_name, node) -%}
    {%- if custom_schema_name is none -%}
        {{ return(target.schema) }}
    {%- else -%}
        {{ custom_schema_name | trim }}
    {%- endif -%}
{%- endmacro %}
```
