# О расширении dbt для VS Code

Локальная разработка

Расширение dbt для VS Code обеспечивает сверхбыструю, интеллектуальную и экономичную разработку с dbt в VS Code. Это единственный способ использовать все возможности dbt v2 при разработке с самостоятельно развернутой установкой.

* *Экономьте время и ресурсы* благодаря почти мгновенному парсингу, обнаружению ошибок в реальном времени, мощным возможностям IntelliSense и многому другому.
* *Оставайтесь в потоке* благодаря цельному, сквозному процессу разработки dbt, созданному с нуля специально для локальной работы с dbt.

Расширение dbt для VS Code доступно в [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=dbtLabsInc.dbt).

Расширение dbt для VS Code работает с v2 — бесплатным продуктом, который вы получаете по умолчанию при установке dbt.

## Совместимость версий

И dbt v1, и dbt v2 поддерживают расширение dbt для VS Code.

Следующие возможности редактора доступны сразу, если ваш проект соответствует спецификации языка v2:

* Автодополнение для `ref`, источников, макросов и блоков документации
* Переход к определению и поиск ссылок для моделей, источников, макросов и документации
* Обнаружение синтаксических ошибок Jinja
* Переименование моделей с обновлением вызовов `ref`, а также переименование ссылок на источники или таблицы
* Просмотр скомпилированного SQL и предварительный просмотр модели, выделенного SQL или отдельного CTE
* Запуск `dbt run`, `build`, `test` и использование селекторов
* Описания таблиц, метаданные и отображение метаданных при наведении
* Типы, описания и тесты столбцов в производственной среде
* Визуальное и текстовое представление происхождения данных таблиц на панели расширения

Если ваш проект ещё не соответствует спецификации языка v2, в расширение встроен инструмент [dbt-autofix](https://github.com/dbt-labs/dbt-autofix). Включите его, чтобы исправить использование устаревших возможностей во всём проекте одним pull request. Для каждой проблемы на панели **Problems** также доступно действие автоматического исправления — через значок лампочки или контекстное меню.

Чтобы получить доступ ко всем возможностям языкового сервера, включая отслеживание происхождения данных на уровне столбцов, переход к определению столбца и поиск ссылок на него, обнаружение несуществующих столбцов и ошибок типов, проверку синтаксиса с учётом особенностей хранилища данных, переименование столбцов с распространением изменений на зависимые объекты и раскрытие `SELECT *`, включите [`static_analysis: strict`](https://docs.getdbt.tech/reference/resource-configs/static-analysis.md?version=2) и устраните ошибки разбора. Полный список возможностей приведён в разделе [О dbt LSP](https://docs.getdbt.tech/docs/about-dbt-lsp.md).

Попробуйте руководство по быстрому старту с dbt v2

Ознакомьтесь с [руководством по быстрому старту с v2](https://docs.getdbt.tech/guides/dbt.md?step=1), чтобы попробовать расширение dbt для VS Code в действии.

## Навигация по dbt extension

После установки расширения dbt для VS Code в вашей IDE появится несколько визуальных улучшений, которые помогут вам ориентироваться в его возможностях и функциях. Подробнее о них читайте в разделе [Возможности расширения dbt](https://docs.getdbt.tech/docs/dbt-extension-features.md).

Посмотрите следующее видео, чтобы увидеть функции и возможности расширения dbt VS Code:

[dbt v2 + VS Code extension walkthrough](https://app.storylane.io/share/a1rkqx0mbd7a)

### Вход в аккаунт и доступ к функциям

После установки расширения dbt для VS Code вам становятся доступны его [функции](https://docs.getdbt.tech/docs/dbt-extension-features.md). Их доступность зависит от режима [статического анализа](https://docs.getdbt.tech/docs/build/about-static-analysis.md) в вашем проекте. Например, для отслеживания происхождения данных на уровне столбцов и перехода к определению столбца требуется `static_analysis: strict`.

Некоторые функции получают данные из вашего аккаунта dbt platform, например вкладка **Catalog** и [сравнение изменений](https://docs.getdbt.tech/docs/dbt/vs-compare-changes.md) с использованием отложенного разрешения ссылок на платформе. [Войдите](https://docs.getdbt.tech/docs/sign-in-dbt-extension.md) в аккаунт dbt platform, чтобы расширение могло обращаться к нему для работы этих функций.

Полный список функций и сведения об их доступности см. в разделе [Функции расширения для VS Code](https://docs.getdbt.tech/docs/dbt-extension-features.md#feature-availability).

Вход выполняется с помощью команды [`dbt login`](https://docs.getdbt.tech/reference/commands/login.md?version=2.0). Состояние входа используется совместно в CLI, расширении dbt для VS Code и dbt State (если вы входите через dbt platform). Вы можете воспользоваться [мастером начала работы](https://docs.getdbt.tech/docs/install-dbt-extension.md#%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%BE-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B) или выполнить `dbt login` в терминале, а затем перезапустить или перезагрузить VS Code. Расширение автоматически определит, что вы вошли в аккаунт.

### Меню расширения dbt

Логотип dbt на боковой панели (или надпись **dbt Extension** на нижней панели) открывает главное меню расширения. В этом меню представлены полезная информация и доступные действия:

* **Кнопка Get started:** Запускает процесс [обновления до v2](https://docs.getdbt.tech/docs/upgrade-to-dbt-extension.md).
* **Информация о расширении:** Сведения о расширении, v2 и вашем проекте dbt. Включает параметры настройки и доступные действия.
* **Справка:** Быстрые ссылки на службу поддержки, отправку сообщений об ошибках и документацию.

[![Экран приветствия dbt VS Code extension.](/img/docs/extension/sidebar-menu.png?v=2 "Экран приветствия dbt VS Code extension.")](#)Экран приветствия dbt VS Code extension.

### Кэширование

Расширение dbt кэширует важную информацию о схемах из вашего data warehouse для повышения скорости и производительности. Кэш автоматически обновляется со временем, но если были внесены недавние изменения, которые не отображаются в проекте, вы можете обновить информацию вручную:

1. Нажмите на **логотип dbt** на боковой панели, чтобы открыть меню.
2. Раскройте раздел **Extension info** и найдите подраздел **Actions**.
3. Нажмите **Clear Cache**, чтобы обновить данные.

## Использование расширения

После установки расширение dbt автоматически активируется при открытии любого файла `.sql` или `.yml` в каталоге проекта dbt.

## Конфигурация

После установки вы можете настроить расширение под свой рабочий процесс:

1. Откройте настройки VS Code, нажав `Ctrl+,` (Windows/Linux) или `Cmd+,` (Mac).
2. Введите в поиске `dbt`. На этой странице вы сможете настроить параметры расширения под свои нужды.

[![Настройки dbt extension в настройках VS Code.](/img/docs/extension/dbt-extension-settings.png?v=2 "Настройки dbt extension в настройках VS Code.")](#)Настройки dbt extension в настройках VS Code.

## Известные ограничения

Ниже перечислены известные на данный момент ограничения dbt extension:

* **Remote development:** расширение dbt пока не поддерживает удалённые сессии разработки по SSH. Поддержка будет добавлена в одном из будущих релизов. Подробнее об удалённой разработке см. в [Supporting Remote Development and GitHub Codespaces](https://code.visualstudio.com/api/advanced-topics/remote-extensions) и [Visual Studio Code Server](https://code.visualstudio.com/docs/remote/vscode-server).

* **Работа с файлами YAML:** В настоящее время расширение dbt имеет следующие ограничения при работе с файлами YAML:

  * Переход к определению не поддерживается для узлов, определённых в файлах YAML (например, снимков).
  * При переименовании моделей и столбцов ссылки в файлах YAML не обновляются.
  * Эти ограничения будут устранены в будущих версиях расширения dbt.

* **Переименование моделей:** При переименовании файла модели расширение dbt вносит изменения, обновляя все вызовы `ref()`, которые ссылаются на переименованную модель. Из-за ограничений клиента языкового сервера VS Code расширение не может автоматически сохранять эти изменённые файлы. В результате переименование файла модели может привести к ошибкам компиляции в вашем проекте. Чтобы исправить эти ошибки, вручную сохраните каждый файл, изменённый расширением dbt, или выберите **File** --> **Save All**, чтобы сохранить все изменённые файлы.

* **Использование Agent mode в Cursor:** при использовании dbt extension в Cursor визуализация lineage корректно работает в режиме Editor и не отображается в Agent mode. Если вы работаете в Agent mode и вам нужно посмотреть lineage, переключитесь в Editor mode, чтобы получить доступ ко всем возможностям вкладки lineage.

### Конфликты расширений

Иногда расширение может конфликтовать с другими расширениями VS Code, предоставляющими похожие возможности (например, проверку кода). При работе с расширением dbt может потребоваться отключить эти сторонние расширения.

**YAML от Red Hat:**

Расширение YAML от Red Hat может ошибочно помечать некоторые ключи (например, `static_analysis`) в YAML-файлах dbt как недопустимые в IDE.

[![Статический анализ ошибочно помечен как недопустимый](/img/docs/extension/false-yaml-error.png?v=2 "Статический анализ ошибочно помечен как недопустимый")](#)Статический анализ ошибочно помечен как недопустимый

Чтобы решить эту проблему, выполните одно из следующих действий:

* (Рекомендуется) Отключите расширение YAML от Red Hat на время работы с расширением dbt.

* Добавьте следующую конфигурацию в файл `settings.json` VS Code:

  ```json
  "yaml.schemas": {
      "Core/dbtschema.json": "data/dbt/models/**/schema.yml",
      "": "data/dbt/dbt_project.yml"
  },
  ```

  Это может *полностью* отключить использование хранилища схем, что приведёт к непредвиденным последствиям.

## dbt Wizard

Расширение dbt для VS Code и [dbt Wizard](https://docs.getdbt.tech/docs/platform/wizard-overview.md#get-started) предназначены для совместной работы. Расширение обеспечивает быстрый разбор кода, обнаружение ошибок непосредственно в редакторе и IntelliSense. dbt Wizard добавляет поверх этих возможностей ИИ-слой — он работает с актуальными сведениями о вашем проекте через [dbt Information Schema](https://docs.getdbt.tech/docs/build/dbt-information-schema.md), структурированное представление [происхождения и зависимостей данных](https://docs.getdbt.tech/docs/explore/explore-projects.md), состояния моделей, покрытия тестами и семантических определений.

* **Создание и рефакторинг по запросам на естественном языке**: Опишите, что вам нужно, просмотрите различия, одобрите изменения или скорректируйте направление работы, прежде чем что-либо будет сохранено.
* **Проверка изменений до их применения**: Агент компилирует и выполняет код в вашем хранилище данных в коротком итеративном цикле, а не ограничивается линтингом в редакторе.
* **Работа с полной картой проекта**: Исследуйте [DAG](https://docs.getdbt.tech/docs/explore/explore-projects.md), оценивайте влияние на зависимые объекты и поддерживайте тесты и YAML в актуальном состоянии при изменении моделей.

Для специалистов по данным сочетание возможностей редактора на базе dbt LSP с агентом dbt Wizard, учитывающим контекст проекта, означает меньше ручной работы с YAML, меньше переключений контекста и более быстрые итерации при решении сложных задач моделирования данных. Чтобы начать работу, ознакомьтесь с [кратким руководством по dbt Wizard](https://docs.getdbt.tech/docs/platform/wizard-overview.md#get-started).

Клиенты dbt platform могут обратиться в службу поддержки dbt Labs по адресу <support@getdbt.com>. Также вы можете связаться с нами напрямую через вашего Account Manager.

Для организаций, которые не являются клиентами dbt platform, лучшим местом для вопросов и обсуждений является [dbt Community Slack](https://www.getdbt.com/community/join-the-community).

Для организаций, которые не являются клиентами платформы dbt, лучшее место для вопросов и обсуждений — [Slack сообщества dbt](https://www.getdbt.com/community/join-the-community).

Мы постоянно работаем над улучшением расширения, поэтому будем рады вашим отзывам и предложениям!

Расширение доступно всем пользователям. Дополнительную информацию см. в [Лицензионном соглашении на продукты dbt](https://www.getdbt.com/dbt-product-license-agreement).

Разрабатываете локально и пользуетесь dbt platform?

В руководстве [Гибридная разработка с dbt platform и dbt v2](https://docs.getdbt.tech/guides/dbt-platform-local-workflow.md) описано, как синхронизировать учётные данные, переменные окружения и версии dbt v2 между локальным расширением и dbt platform.

## Дополнительная информация о dbt v2

* [Журнал изменений dbt v2](https://github.com/dbt-labs/dbt/blob/main/CHANGELOG-dbt.md)
* [Установка dbt v2](https://docs.getdbt.tech/docs/local/install-dbt.md)
* [Краткое руководство по началу работы с dbt v2](https://docs.getdbt.tech/guides/dbt.md?step=1)
* [Руководство по обновлению](https://docs.getdbt.tech/docs/dbt-versions/dbt-upgrade/upgrading-to-v2.md)
* [Лицензионное соглашение dbt v2](https://www.getdbt.com/dbt-fusion-engine-license-agreement)
