# Сравнение на равенство с учетом NULL (макрос equals)

| enable\_truthy\_nulls\_equals\_macro            | dbt **v1 Latest** | dbt v1 |
| ----------------------------------------------- | ----------------- | ------ |
| Добавлен                                        | 2025.02           | 1.9.0  |
| Стабилизирован (значение по умолчанию → `true`) | —                 | —      |
| Удален                                          | —                 | —      |

По умолчанию флаг `enable_truthy_nulls_equals_macro` имеет значение `false`. Если установить для него значение `true` в файле `dbt_project.yml`, макрос dbt [equals](https://docs.getdbt.tech/reference/dbt-jinja-functions/cross-database-macros.md#equals), используемый в инкрементальных материализациях и материализациях снимков, будет выполнять сравнение на равенство с учетом NULL.

По умолчанию макрос `equals()` следует [трехзначной логике (3VL)](https://modern-sql.com/concept/three-valued-logic) SQL, поэтому выражение `NULL = NULL` возвращает `UNKNOWN`, а не `TRUE`.

Когда флаг `enable_truthy_nulls_equals_macro` включен, макрос `equals()` использует семантику оператора [`IS NOT DISTINCT FROM`](https://modern-sql.com/feature/is-distinct-from), при которой два значения `NULL` считаются равными.

Чтобы включить флаг, добавьте его в раздел `flags` файла `dbt_project.yml`:

dbt\_project.yml

```yml
flags:
  enable_truthy_nulls_equals_macro: true
```
