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

Новый плагин dbt для VS Code: опыт, которого мы все ждали

· 7 мин. чтения
Bruno Souza de Lima
Lead Data Engineer at phData

Привет, сообщество!

Меня зовут Бруно, и, возможно, вы видели мои посты про dbt в LinkedIn. Если нет — давайте познакомимся. Я начал работать с dbt более 3 лет назад. В то время я только осваивал этот инструмент и, чтобы лучше в нём разобраться, начал создавать материалы, которые помогали мне учиться. Один из них — шпаргалка по dbt — и стал отправной точкой моего пути в сообществе.

От этой шпаргалки я перешёл к созданию самых разных материалов, участию и активному взаимодействию с сообществом, и в итоге дважды получил награду dbt community award. Я очень благодарен за это и по-настоящему горжусь.

С момента приобретения SDF Labs компанией dbt Labs я ждал дня, когда мы увидим результат слияния этих двух компаний. Спойлер: это dbt Fusion engine — и он оказался даже лучше, чем я ожидал.

Developer experience в dbt до эпохи Fusion

Если вы когда‑нибудь начинали dbt‑проект, велика вероятность, что ваш путь был похож на мой: клонирование jaffle_shop, открытие проекта в VS Code и первый запуск dbt run (на самом деле второй, потому что я знаю, что в первый раз вы забыли запустить dbt deps). Это и есть обряд инициации в dbt, наше «hello world».

Вы поигрались с staging models, таблицами orders и customers. Но давайте честно: developer experience в таком сетапе всегда был немного… неуклюжим.

Вы хотели посмотреть lineage проекта — одну из самых крутых фич dbt — и для этого нужно было запускать dbt docs generate, затем serve и открывать документацию в браузере. Внесли изменения? Повторяйте всё заново.

Хотели посмотреть метаданные проекта? Нужно было либо снова полагаться на dbt docs (и весь этот процесс), либо собирать какое‑то кастомное решение на основе manifest.json.

Переход на dbt Cloud (теперь он называется просто dbt) сделал жизнь проще. Там есть встроенный Studio IDE с интеграцией git, более удобная компиляция и предпросмотр моделей, автоматически обновляемая вкладка lineage под моделью, значительно улучшенная документация с dbt Explorer (теперь — Catalog), а также множество мощных возможностей для оркестрации, наблюдаемости, CI/CD и многого другого.

Облачный dbt стал большим шагом вперёд, но даже так многие из нас всё равно предпочитали собственные dev‑окружения. Нам нравится использовать свои темы, расширения VS Code, терминалы — но за это приходилось платить потерей всех удобных cloud‑фич во время разработки. Грустный компромисс.

Мы уже не раз ходили от dbt обратно в терминал, и некоторые проблемы так и оставались. Взять, к примеру, очень распространённую ситуацию при изменении dbt‑модели: забыли запятую[1]. Вы узнаёте об ошибке только после того, как dbt попытается запустить модель в хранилище, а до этого ему ещё нужно дождаться, пока поднимется кластер. В итоге вы получаете фидбек о пропущенной запятой лишь через минуту.

[1]: потому что вы используете trailing commas вместо leading commas — их сложнее заметить, и вообще я слишком много говорю про войну запятых.

Всё это постоянное «пинг‑понг» взаимодействие между dbt и платформой замедляло работу над проектом.

Именно поэтому этот новый релиз — настолько важное событие. Он решает все перечисленные проблемы и добавляет вещи, о необходимости которых я даже не догадывался, пока не увидел их вживую.

Новая эра разработки с dbt

После приобретения SDF Labs и обновлённого фокуса на developer experience, dbt Labs анонсировали свой новый движок — Fusion. Он был написан с нуля на Rust, и его «интеллект» будет усиливать dbt независимо от того, где вы его запускаете. Существует несколько способов использовать Fusion engine, но лучший из них — вместе с анонсированным расширением для VS Code.

Fusion engine в сочетании с расширением для VS Code — это то, как, по моему мнению, люди будут работать с dbt в будущем. И могу сказать честно: это ощущается как тот самый опыт, которого мы все так долго ждали.

После того как попробуешь, сложно представить возвращение назад. Работать с dbt в VS Code без этого расширения теперь просто не имеет смысла.

В нём есть множество возможностей, которые упрощают работу, повышают эффективность, позволяют разрабатывать быстрее и тратить меньше ресурсов. Но давайте расскажу о моих любимых.

Отлов SQL‑ошибок в реальном времени

Здесь выбор был очевиден. Больше не нужно ждать, пока платформа отладит ваш код за вас. Если вы ошиблись в названии колонки или перепутали порядок параметров функции, вы увидите ошибку ещё до запуска.

Это возможно потому, что Fusion больше не воспринимает SQL просто как строку — он действительно его понимает. Плюс, он показывает полезную информацию о самой ошибке.

Показ ошибок функций.Показ ошибок функций.
Показ ошибок в названиях колонок.Показ ошибок в названиях колонок.

На мой взгляд, это самое большое улучшение во всём этом движке.

Lineage моделей и колонок

Следующая любимая фича — визуализация lineage. Если вы пользовались dbt, вы почувствуете себя как дома. А если вы работали с dbt Core — наконец‑то больше не нужно генерировать dbt docs, чтобы посмотреть lineage.

Теперь прямо в VS Code есть вкладка lineage, которая показывает lineage проекта в интерактивном и «живом» виде. Можно использовать lenses — это удобный способ визуализировать проект по разным атрибутам, например resource_type или materialization.

Линейность проекта.Линейность проекта.

И ещё одна вещь, которую я не ожидал здесь увидеть, но очень рад, что она есть, — column‑level lineage. Не просто откуда берутся колонки, но и как они меняются: переименовываются, трансформируются или прокидываются дальше без изменений.

Это невероятно полезно для отладки трансформаций или для понимания того, как формируется ключевая метрика на протяжении всей цепочки моделей.

Линейность на уровне колонок.Линейность на уровне колонок.

Мгновенный рефакторинг

Ладно, покажу ещё одну вещь! Бывало ли у вас так, что вы хотели переименовать модель или колонку, но она используется во множестве downstream‑объектов, и вы отказывались от идеи, потому что не хотелось всё рефакторить или было страшно что‑нибудь сломать?

Теперь, благодаря глубокому пониманию SQL в dbt Fusion, вы можете переименовать модель или колонку, а расширение автоматически отрефакторит все downstream‑зависимости. И не переживайте: перед применением изменений расширение покажет их превью, чтобы вы были уверены, что всё делается именно так, как нужно.

У этого расширения есть и множество других возможностей: мгновенная навигация по моделям, автодополнение буквально всего, переименование моделей и колонок с предупреждением о влиянии на проект, предпросмотр моделей и CTE и многое другое — часть этого уже подробно описана в других блогах. К тому же расширение только что вышло, так что, уверен, нас ждёт ещё много улучшений.

Заключение: новый стандарт

Это расширение меняет само ощущение от работы с dbt. Оно объединяет производительность, контекст и интерактивность таким образом, что dbt наконец‑то чувствует себя «родным» внутри современного developer‑окружения. И самое приятное — это только начало.

Fusion engine уже делает dbt быстрее и умнее «под капотом». И он открывает дорогу к более плавному, уверенному и интуитивному процессу разработки. Меньше переключений контекста. Меньше подводных камней. Больше времени на размышления о данных, а не об инструментах.

Если вы когда‑нибудь писали модели в текстовом редакторе и думали, что dbt «просто должен понимать больше», — это для вас.

Если вы полагались на CLI, но вам не хватало полноценного автокомплита, — это для вас.

И если вы хотели лучшее из двух миров — гибкость Core и мощь Cloud, — возможно, это станет вашим новым стандартом. Даже если вы используете dbt Cloud, это выводит dbt-core на совершенно новый уровень.

Мы с огромным интересом ждём, как сообщество будет использовать всё это. Попробуйте. Потестируйте. Делитесь тем, что работает, и тем, чего не хватает.

Это расширение будет постоянно обновляться, так что следите за новостями.

Это тот самый опыт, которого мы все ждали.

Бруно — ведущий Data Engineer в phData и недавно создал платформу для обучения dbt под названием DataGym.io.

Comments

Loading