# execute\_hooks\_on\_any\_reuse

### YAML-файл проекта

dbt\_project.yml

```yaml
models:
  <resource-path>:
    +state:
      execute_hooks_on_any_reuse: true | false
```

### YAML-файл свойств

models/\<filename>.yml

```yaml
models:
  - name: my_model
    config:
      state:
        execute_hooks_on_any_reuse: true | false
```

### Конфигурация в SQL-файле

models/\<filename>.sql

```sql
{{ config(
    state={
      "execute_hooks_on_any_reuse": true | false
    }
) }}
```

## Определение

Когда dbt State пропускает узел, поскольку он всё ещё актуален, pre- и post-хуки этого узла по умолчанию не выполняются. Это соответствует стандартному поведению dbt: если узел не выполнялся, его хуки не запускаются.

Установите `execute_hooks_on_any_reuse: true`, если у вас есть хуки аудита или другие хуки, которые должны запускаться при каждом запуске задания независимо от того, был ли узел перестроен или использован повторно.

| Значение               | Поведение                                                             |
| ---------------------- | --------------------------------------------------------------------- |
| `false` (по умолчанию) | Хуки пропускаются, когда узел используется повторно без перестроения. |
| `true`                 | Хуки запускаются, даже когда узел используется повторно.              |

Хуки всегда выполняются, когда dbt State *клонирует* узел из другого окружения, поскольку на этапе клонирования в хранилище данных создаётся новый объект.

## Пример

### Всегда запускать хуки аудита

Используйте `execute_hooks_on_any_reuse: true` для узлов с хуками аудита или отслеживания происхождения данных, которые должны выполняться при каждом запуске задания:

models/fct\_orders.yml

```yaml
models:
  - name: fct_orders
    config:
      state:
        execute_hooks_on_any_reuse: true
      post-hook:
        - "INSERT INTO audit_log VALUES ('{{ model.name }}', CURRENT_TIMESTAMP())"
```

## Связанная документация

* [О dbt State](https://docs.getdbt.tech/docs/deploy/dbt-state-about.md)
* [Настройка dbt State](https://docs.getdbt.tech/docs/deploy/dbt-state-setup.md)
* [Хуки](https://docs.getdbt.tech/docs/build/hooks-operations.md)
