Перейти к основному содержимому

Советы и рекомендации по dbt

Используйте эту страницу для получения ценных идей и практических советов, чтобы улучшить ваш опыт работы с dbt. Независимо от того, новичок вы в dbt или опытный пользователь, эти советы помогут вам работать более эффективно и результативно.

Следующие советы организованы по следующим категориям:

Если вы разрабатываете с использованием dbt Cloud IDE, вы можете обратиться к странице горячих клавиш, чтобы сделать разработку более продуктивной и простой для всех.

Советы по пакетам

Используйте эти пакеты dbt для оптимизации вашего рабочего процесса:

ПакетОписание
dbt_codegenИспользуйте пакет для генерации YML файлов для ваших моделей и источников, а также SQL файлов для ваших промежуточных моделей.
dbt_utilsПакет содержит макросы, полезные для ежедневной разработки. Например, date_spine генерирует таблицу со всеми датами между указанными в параметрах.
dbt_project_evaluatorПакет сравнивает ваш проект dbt с перечнем наших лучших практик и предоставляет рекомендации и руководства по обновлению ваших моделей.
dbt_expectationsПакет содержит множество тестов, выходящих за рамки встроенных в dbt.
dbt_audit_helperПакет позволяет сравнивать результаты двух запросов. Используйте его при рефакторинге существующей логики, чтобы убедиться, что новые результаты идентичны.
dbt_artifactsПакет сохраняет информацию о ваших запусках dbt непосредственно на вашей платформе данных, чтобы вы могли отслеживать производительность моделей с течением времени.
dbt_meta_testingЭтот пакет проверяет, что ваш проект dbt достаточно протестирован и задокументирован.

Продвинутые советы и техники

  • Используйте структуру папок в качестве основного метода выбора. dbt build --select marts.marketing проще и более устойчив, чем полагаться на маркировку каждой модели.
  • Рассматривайте задания с точки зрения частоты сборки и SLA. Запускайте модели с почасовой, ежедневной или еженедельной частотой сборки вместе.
  • Используйте where config для тестов, чтобы проверить утверждение на подмножестве записей.
  • store_failures позволяет вам изучать записи, которые вызывают сбои тестов, чтобы вы могли либо исправить данные, либо изменить тест по мере необходимости.
  • Используйте пороги severity, чтобы установить допустимое количество сбоев для теста.
  • Используйте incremental_strategy в конфигурации вашей инкрементальной модели, чтобы реализовать наиболее эффективное поведение в зависимости от объема ваших данных и надежности уникальных ключей.
  • Установите vars в вашем dbt_project.yml, чтобы определить глобальные значения по умолчанию для определенных условий, которые затем можно переопределить с помощью флага --vars в ваших командах.
  • Используйте for loops в Jinja, чтобы DRY повторяющуюся логику, такую как выбор серии столбцов, для которых необходимо применить одинаковые преобразования и шаблоны именования.
  • Вместо того чтобы полагаться на post-hooks, используйте grants config для устойчивого применения разрешений в хранилище.
  • Определите пороги source-freshness для ваших источников, чтобы избежать выполнения преобразований на данных, которые уже были обработаны.
  • Используйте оператор + слева от модели dbt build --select +model_name, чтобы запустить модель и все ее вышестоящие зависимости. Используйте оператор + справа от модели dbt build --select model_name+, чтобы запустить модель и все, что от нее зависит.
  • Используйте dir_name, чтобы запустить все модели в пакете или директории.
  • Используйте оператор @ слева от модели в настройке CI без учета состояния, чтобы протестировать ее. Этот оператор запускает всех родителей и детей выбора, а также родителей его детей, которые в новой схеме CI, вероятно, еще не существуют.
  • Используйте флаг --exclude, чтобы исключить подмножество моделей из выбора.
  • Используйте флаг --full-refresh, чтобы перестроить инкрементальную модель с нуля.
  • Используйте seeds для создания ручных таблиц поиска, таких как почтовые индексы для штатов или маркетинговые UTM для кампаний. dbt seed создаст их из CSV в вашем хранилище и сделает их доступными для ref в ваших моделях.
  • Используйте target.name, чтобы изменять логику в зависимости от того, какую среду вы используете. Например, чтобы строить в одну схему разработки во время разработки, но использовать несколько схем в производстве.

Связанные документы

0