О команде dbt source
Команда dbt source предоставляет одну устаревшую подкоманду — dbt source freshness, которая проверяет только источники.
В версии v2 используйте команду верхнего уровня dbt freshness, чтобы одной командой проверять и источники, и модели на соответствие настроенным для них пороговым значениям свежести данных.
dbt source freshness
Актуальность
(Версии dbt: v2.0 и новее)Если в вашем проекте dbt настроены источники, dbt определяет «актуальность» каждой таблицы источника на основе конфигурации freshness, заданной для этого источника. Если данные в таблице устарели, dbt сообщает об этом предупреждением или ошибкой в зависимости от настроек и завершает работу с ненулевым кодом выхода.
Чтобы проверить актуальность источников, выполните команду dbt freshness.
Настройка свежести
В примере ниже показано, как настроить проверку свежести источников в dbt. Дополнительную информацию см. в разделе Объявление свежести источников.
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. Дополнительную информацию см. в разделе Включение проверок свежести источников.
(Версии dbt: v2.0 и новее)Проверка указанных источников
По умолчанию dbt freshness проверяет все источники и модели в вашем проекте, для которых задана конфигурация freshness. Чтобы проверить только часть источников, используйте флаг --select.
# Проверить актуальность всех таблиц Snowplow:
$ dbt freshness --select "source:snowplow"
# Проверить актуальность определённой таблицы источника:
$ dbt freshness --select "source:snowplow.event"
Результаты проверки актуальности
После завершения dbt freshness dbt записывает результаты для проверенных источников и моделей в target/freshness.json. Каждая запись содержит поле resource_type, указывающее, является ли ресурс источником или моделью. Полную схему см. в разделе freshness.json.
Если в ходе запуска проверяются источники, dbt также записывает target/sources.json для обратной совместимости. Этот файл содержит только источники, без поля resource_type. Полную схему см. в разделе sources.json.
Использование результатов проверки актуальности
Результаты проверки актуальности помогают понять, поступают ли данные в источник или модель с задержкой и как их актуальность меняется со временем.
Вы можете в любой момент проверить актуальность вручную с помощью dbt freshness. Мы также рекомендуем запускать эту проверку по расписанию и сохранять результаты через регулярные интервалы времени. Накопленные за длительный период результаты позволяют получать оповещения о нарушении соглашений об уровне обслуживания (SLA) в отношении актуальности исходных данных и отслеживать, как актуальность меняется со временем.
dbt позволяет легко запускать проверки актуальности по расписанию и предоставляет готовую панель мониторинга, которая показывает состояние актуальности источников, определённых в вашем проекте. Подробнее см. в разделе Актуальность исходных данных.