# О команде dbt source

(Версии dbt: v2.0 и новее)

Команда `dbt source` предоставляет одну устаревшую подкоманду — `dbt source freshness`, которая проверяет только источники.

В версии v2 используйте команду верхнего уровня [`dbt freshness`](https://docs.getdbt.tech/reference/commands/freshness.md), чтобы одной командой проверять и источники, и модели на соответствие настроенным для них [пороговым значениям свежести данных](https://docs.getdbt.tech/reference/resource-configs/freshness.md).

### dbt source freshness

### Актуальность

(Версии dbt: v2.0 и новее)

Если в вашем проекте dbt [настроены источники](https://docs.getdbt.tech/docs/build/sources.md), dbt определяет «актуальность» каждой таблицы источника на основе конфигурации `freshness`, заданной для этого источника. Если данные в таблице устарели, dbt сообщает об этом предупреждением или ошибкой в зависимости от настроек и завершает работу с ненулевым кодом выхода.

Чтобы проверить актуальность источников, выполните команду [`dbt freshness`](https://docs.getdbt.tech/reference/commands/freshness.md).

### Настройка свежести

В примере ниже показано, как настроить проверку свежести источников в dbt. Дополнительную информацию см. в разделе [Объявление свежести источников](https://docs.getdbt.tech/docs/build/sources.md#declaring-source-freshness).

models/\<filename>.yml

```yaml


sources:
  - name: jaffle_shop
    database: raw
    config:
      freshness: # changed to config in v1.9
        warn_after: {count: 12, period: hour}
        error_after: {count: 24, period: hour}

      loaded_at_field: _etl_loaded_at # changed to config in v1.10

    tables:
      - name: customers

      - name: orders
        config:
          freshness: 
            warn_after: {count: 6, period: hour}
            error_after: {count: 12, period: hour}
            filter: datediff('day', _etl_loaded_at, current_timestamp) < 2

      - name: product_skus
        config:
          freshness: null 
          
```

Это помогает отслеживать состояние и «здоровье» пайплайна данных.

Вы также можете настроить проверку свежести источников в разделе **Execution settings** на странице **Settings** задания в dbt platform. Дополнительную информацию см. в разделе [Включение проверок свежести источников](https://docs.getdbt.tech/docs/deploy/source-freshness.md#enabling-source-freshness-checks).

(Версии dbt: v2.0 и новее)

### Проверка указанных источников

По умолчанию `dbt freshness` проверяет все источники и модели в вашем проекте, для которых задана конфигурация `freshness`. Чтобы проверить только часть источников, используйте флаг `--select`.

```bash
# Проверить актуальность всех таблиц Snowplow:
$ dbt freshness --select "source:snowplow"

# Проверить актуальность определённой таблицы источника:
$ dbt freshness --select "source:snowplow.event"
```

(Версии dbt: v2.0 и новее)

### Результаты проверки актуальности

После завершения `dbt freshness` dbt записывает результаты для проверенных источников и моделей в `target/freshness.json`. Каждая запись содержит поле `resource_type`, указывающее, является ли ресурс источником или моделью. Полную схему см. в разделе [`freshness.json`](https://docs.getdbt.tech/reference/artifacts/freshness-json.md).

Если в ходе запуска проверяются источники, dbt также записывает `target/sources.json` для обратной совместимости. Этот файл содержит только источники, без поля `resource_type`. Полную схему см. в разделе [`sources.json`](https://docs.getdbt.tech/reference/artifacts/sources-json.md).

(Версии dbt: v2.0 и новее)

### Использование результатов проверки актуальности

Результаты проверки актуальности помогают понять, поступают ли данные в источник или модель с задержкой и как их актуальность меняется со временем.

Вы можете в любой момент проверить актуальность вручную с помощью [`dbt freshness`](https://docs.getdbt.tech/reference/commands/freshness.md). Мы также рекомендуем запускать эту проверку по расписанию и сохранять результаты через регулярные интервалы времени. Накопленные за длительный период результаты позволяют получать оповещения о нарушении соглашений об уровне обслуживания (SLA) в отношении актуальности исходных данных и отслеживать, как актуальность меняется со временем.

dbt позволяет легко запускать проверки актуальности по расписанию и предоставляет готовую панель мониторинга, которая показывает состояние актуальности источников, определённых в вашем проекте. Подробнее см. в разделе [Актуальность исходных данных](https://docs.getdbt.tech/docs/build/sources.md#source-data-freshness).
