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

Анализ наших сборок

Анализ наших сборок

  • ⌚ dbt отслеживает, сколько времени потребовалось на сборку каждой модели, когда она началась, когда закончилась, её статус выполнения (error, warn или success), тип материализации и многое другое.
  • 🖼️ Эта информация сохраняется в нескольких файлах, которые dbt называет artifacts.
  • 📊 Artifacts содержат огромное количество информации в формате JSON, поэтому их не так просто читать, но dbt упаковывает самые полезные данные в аккуратную визуализацию.
  • ☁️ Если вы не используете Cloud, мы всё равно можем использовать вывод dbt Core CLI, чтобы разобраться в наших запусках.

Время выполнения модели

Именно здесь визуализация Model Timing в dbt становится особенно полезной. Если мы настроили Job в dbt для запуска наших моделей, мы можем использовать вкладку Model Timing, чтобы точно определить самые долго выполняющиеся модели.

Диаграмма Model Timing в

  • 🧵 Этот вид позволяет увидеть, как модели распределяются по потокам (до 64 потоков; сейчас мы запускаемся с 4, поэтому видим 4 дорожки) во времени. Можно представить, что каждый поток — это полоса на шоссе.
  • ⌛ На примере выше видно, что stg_order_items и order_items занимают больше всего времени, поэтому имеет смысл сделать их incremental.
  • 1️⃣ Если job содержит один вызов dbt (например, dbt build), диаграмма model timing отражает время выполнения всех моделей.
  • 🔢 Если job включает несколько команд dbt (например, dbt build, а затем dbt compile), диаграмма model timing отражает только модели из последней команды (dbt compile). Для моделей, выполненных в обеих командах, на диаграмме отображается время из последнего вызова. Модели, которые не были повторно запущены в финальной команде, сохраняют время выполнения из предыдущей команды (dbt build).

Если вы не используете dbt, ничего страшного! У нас не будет красивой визуализации «из коробки», но мы можем использовать вывод dbt Core CLI, чтобы проверить время выполнения моделей — и это отличная возможность поближе познакомиться с этим выводом.

Вывод dbt Core CLI

Если вы когда-либо запускали dbt, будь то build, test, run или что-то еще, вы видели вывод, подобный приведенному ниже. Давайте более внимательно посмотрим, как его читать.

Вывод CLI из команды dbt build

  • Для каждой модели есть две записи: начало сборки модели и завершение, которое будет включать время, затраченное на выполнение модели. Также включен тип модели. Например:
20:24:51  5 of 10 START sql view model main.stg_products ......... [RUN]
20:24:51 5 of 10 OK created sql view model main.stg_products .... [OK in 0.13s]
  • 5️⃣  На обеих строках мы видим, что наша модель stg_products является 5-й из 10 объектов, которые строятся, отметку времени, когда она началась, что она была определена в SQL (в отличие от python), и что это было представление.
  • 🆕  На первой строке мы видим отметку времени, когда модель начала.
  • ✅  На второй строке — которая не обязательно идет сразу после, благодаря потокам другие модели могут начинаться и заканчиваться, пока эта модель выполняется — мы видим запись о завершении, которая добавляет статус, в данном случае OK, и время сборки, молниеносные 0.13 секунды. Это неудивительно, учитывая, что мы знаем о представлениях.
  • 🏎️  Представления обычно должны занимать менее секунды или двух, это таблицы и инкрементальные модели, за которыми вы захотите следить более внимательно с помощью этих инструментов.

Пакет dbt Artifacts

  • 🎨  Наконец, когда дело доходит до анализа ваших запусков dbt, вы не остаетесь без наглядных визуализаций, даже если используете dbt Core. Это не настроено «из коробки», но если вы хотите глубже проанализировать свой проект, можно использовать пакет dbt Artifacts.
  • 👩‍🎨  Он предоставляет модели, которые можно визуализировать для каждого аспекта вашего проекта на очень детальном уровне.
  • ⌚  Вы можете использовать его, чтобы создать собственные визуализации времени выполнения моделей в вашем BI‑инструменте, а также любые другие отчёты, необходимые для контроля вашей стратегии materialization.

Нашли ошибку?

0
Loading