# Возможности расширения dbt для VS Code

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

Расширение dbt для VS Code использует динамический протокол языкового сервера (LSP), чтобы сделать разработку на dbt быстрой, интеллектуальной и экономичной благодаря улучшенным рабочим процессам и удобной навигации.

Доступность возможностей

Возможности редактора, предоставляемые расширением, доступны всем пользователям. Некоторые из них зависят от режима [статического анализа](https://docs.getdbt.tech/docs/build/about-static-analysis.md) вашего проекта, а некоторые считывают данные из вашей учетной записи dbt platform.

Полный список возможностей и требований к каждой из них приведен в таблицах [доступности возможностей](#feature-availability).

## Доступность возможностей

Расширение dbt для VS Code можно установить бесплатно, а его функции редактирования доступны всем пользователям. Доступность возможностей зависит от режима [статического анализа](https://docs.getdbt.tech/docs/build/about-static-analysis.md) вашего проекта, а не от вашей учётной записи:

| Возможность                                                           | Доступность                            |
| --------------------------------------------------------------------- | -------------------------------------- |
| Диагностика синтаксических ошибок Jinja, YAML и SQL                   | Все пользователи                       |
| Переход к ref, source и макросам Jinja через LSP                      | Все пользователи                       |
| Диагностика предупреждений линтера                                    | Все пользователи                       |
| Граф зависимостей на уровне таблиц                                    | Все пользователи                       |
| Базовый интерфейс команд dbt (run, build, test и результаты запросов) | Все пользователи                       |
| Автодополнение ref                                                    | Все пользователи                       |
| Рефакторинг имён ref                                                  | Все пользователи                       |
| Автодополнение функций с учётом диалекта                              | Все пользователи                       |
| Кеш запросов для ускорения инкрементальной компиляции                 | Все пользователи                       |
| Предварительный просмотр CTE                                          | `baseline` (по умолчанию) или `strict` |
| Диагностика ошибок типов и схемы SQL                                  | `static_analysis: strict`              |
| Рефакторинг имён столбцов                                             | `static_analysis: strict`              |
| Граф зависимостей на уровне столбцов                                  | `static_analysis: strict`              |
| Переход к столбцам и CTE в SQL через LSP                              | `static_analysis: strict`              |
| Просмотр схемы для `select *` при наведении курсора в SQL через LSP   | `static_analysis: strict`              |

Для следующих возможностей необходимо [войти в систему](https://docs.getdbt.tech/docs/sign-in-dbt-extension.md), чтобы расширение могло читать данные из вашей учётной записи dbt platform:

| Возможность                                                                                                              | Зачем нужна учётная запись dbt platform                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Вкладка документации модели с метаданными платформы                                                                      | Читает статус сборки, описания и результаты тестов из вашей учётной записи dbt platform.                                                                        |
| [Сравнение изменений](https://docs.getdbt.tech/docs/dbt/vs-compare-changes.md) с использованием deferral в dbt platform | Получает манифест для deferral из вашей среды dbt platform. Вместо этого можно указать локальный файл `manifest.json` — учётная запись в таком случае не нужна. |

## Молниеносный парсинг

Выполняйте парсинг даже самых крупных проектов до 30 раз быстрее, чем с dbt v1. Кеш запросов LSP ещё больше ускоряет инкрементальную компиляцию.

[](/img/docs/extension/zoomzoom.mp4)

## Просмотр скомпилированного кода

Просматривайте SQL-код, который будут строить ваши модели, в реальном времени — рядом с dbt-кодом.

Использование:

* Нажмите на **иконку кода**, чтобы посмотреть скомпилированный код рядом с исходным.
* Скомпилированный код обновляется при сохранении исходного кода.
* Клик по dbt-макросу переводит фокус на соответствующий участок скомпилированного кода.
* Клик по блоку скомпилированного кода переводит фокус на соответствующий исходный код.

[](/img/docs/extension/compiled-code.mp4)

## Гибкая сборка

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

Использование:

* Нажмите на **иконку dbt** или используйте сочетание клавиш `cmd+shift+enter` (macOS) / `ctrl+shift+enter` (Windows/Linux), чтобы открыть меню быстрого выбора.
* Выберите команду для запуска.

[](/img/docs/extension/build-flexibly.mp4)

## Обнаружение ошибок в реальном времени

Расширение автоматически проверяет SQL, находит ошибки и показывает предупреждения без обращения к хранилищу.

Диагностика синтаксического дерева Jinja, YAML и SQL (L1):

* Ошибки синтаксиса, например пропущенные запятые и опечатки в ключевых словах.
* Наведите указатель на красное подчёркивание, чтобы увидеть ошибку.
* Полная информация доступна на панели **Problems**.

Семантическая диагностика SQL в dbt v2 (L2) требует настройки [`static_analysis: strict`](https://docs.getdbt.tech/reference/resource-configs/static-analysis.md?version=2):

* Пропущенные выражения `group by` или столбцы, которые не входят в группировку и не агрегируются.
* Недопустимые имена функций или аргументы.
* Ошибки типов и схемы SQL.
* Предупреждения линтера.

[](/img/docs/extension/live-error-detection.mp4)

## Автодополнение IntelliSense

Автодополнение предлагает SQL-функции, имена моделей, макросы и другие элементы.

* Автодополнение вызовов `ref` и `source`. Введите `{{ ref(` или `{{ source(`, чтобы увидеть список доступных ресурсов и их типы. При замене имени модели внутри скобок автодополнение не срабатывает.
* Автодополнение SQL-функций с учётом диалекта.

[![Пример автодополнения IntelliSense в расширении для VS Code](/img/docs/extension/vsce-intellisense.gif?v=2 "Пример автодополнения IntelliSense в расширении для VS Code")](#)Пример автодополнения IntelliSense в расширении для VS Code

## Рефакторинг

При переименовании модели или столбца расширение обновляет ссылки во всём проекте.

Переименование модели:

* Щёлкните правой кнопкой мыши по файлу в дереве и выберите **Rename**.
* После переименования файла расширение предложит обновить ссылки.
  * Выберите **OK**, чтобы применить изменения, или **Show Preview**, чтобы просмотреть их.
* После применения изменений вызовы `ref` будут использовать новое имя модели.

Переименование столбцов требует настройки [`static_analysis: strict`](https://docs.getdbt.tech/reference/resource-configs/static-analysis.md?version=2):

Строгий статический анализ проверяет ссылки на столбец по всему проекту, прежде чем расширение обновит зависимые модели.

* Щёлкните правой кнопкой мыши по псевдониму столбца и выберите **Rename Symbol**.
* После переименования столбца расширение предложит обновить ссылки.
  * Выберите **OK**, чтобы применить изменения, или **Show Preview**, чтобы просмотреть их.
* После применения изменений ссылки на столбец в зависимых моделях будут использовать новое имя.

Примечание. Переименование пока недоступно для снимков и других ресурсов, определённых в файлах `.yml`.

[](/img/docs/extension/refactor.mp4)

## Переход к определениям и ссылкам

Переходите к определению `ref`, макроса, модели или столбца одним щелчком. Это особенно удобно в крупных проектах. Переход к определениям из установленных пакетов недоступен.

* Щёлкните по идентификатору, удерживая Command или Ctrl, чтобы перейти к его определению.
* Щёлкните по идентификатору правой кнопкой мыши и выберите **Go to Definition** или **Go to References**.
* Языковой сервер Jinja поддерживает переход к определениям `ref()`, `source()` и макросов.

Переход к определениям столбцов и CTE требует настройки [`static_analysis: strict`](https://docs.getdbt.tech/reference/resource-configs/static-analysis.md?version=2):

* Переход к определению по имени столбца.
* Переход к определению по имени CTE.

[](/img/docs/extension/go-to-definition.mp4)

## Граф зависимостей в редакторе

Просматривайте зависимости таблиц и столбцов прямо во время разработки.

Зависимости на уровне таблиц:

Вкладка Lineage в Cursor

При использовании расширения dbt для VS Code в Cursor вкладка **Lineage** работает в режиме Editor. В режиме Agent она не отображается. Переключитесь в Editor, чтобы просмотреть зависимости таблиц и столбцов проекта.

Чтобы просмотреть зависимости таблиц:

* Откройте вкладку **Lineage** в редакторе. На ней показаны зависимости таблиц для текущего открытого файла.
* Дважды щёлкните по узлу, чтобы открыть файл в редакторе.
* Панель зависимостей обновляется при переходе между файлами проекта.
* Щёлкните по узлу правой кнопкой мыши, чтобы обновить граф или просмотреть зависимости его столбцов.

[Зависимости на уровне столбцов](https://docs.getdbt.tech/docs/explore/column-level-lineage.md) требуют настройки [`static_analysis: strict`](https://docs.getdbt.tech/reference/resource-configs/static-analysis.md?version=2).

Чтобы просмотреть зависимости столбца:

* Щёлкните правой кнопкой мыши по имени файла модели или по SQL внутри него.
* Выберите **dbt: View Lineage** → **Show column lineage**.
* Выберите столбец.
* Дважды щёлкните по узлу, чтобы обновить выбор в графе.
* Чтобы выбрать столбец в окне графа, введите префикс `column:`, а затем имя столбца.

[](/img/docs/extension/lineage.mp4)

## Подсказки при наведении

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

Для подсказок нужна настройка [`static_analysis: strict`](https://docs.getdbt.tech/reference/resource-configs/static-analysis.md?version=2). Она позволяет расширению определять типы столбцов и сигнатуры функций во всём проекте.

Как пользоваться:

* Наведите указатель на `*`, чтобы увидеть список столбцов и их типы.
* Наведите указатель на имя столбца или псевдоним, чтобы узнать тип.

[](/img/docs/extension/hover-insights.mp4)

## Предпросмотр моделей и CTE

Просматривайте результаты запросов прямо в редакторе, чтобы быстрее проверять и отлаживать SQL.

* Нажмите **значок таблицы** или используйте сочетание `cmd+enter` (macOS) либо `ctrl+enter` (Windows/Linux), чтобы просмотреть результаты модели или выделенного фрагмента SQL.
* Результаты отображаются на вкладке **Query Results** в нижней панели.
* Таблицу можно сортировать. Результаты сохраняются до закрытия вкладки.

Предпросмотр CTE:

* Нажмите **Preview CTE** над кодом, чтобы просмотреть результат CTE.

[](/img/docs/extension/preview-cte.mp4)

## Просмотр каталога

Вкладка читает метаданные из вашего аккаунта dbt platform, поэтому сначала нужно [войти](https://docs.getdbt.tech/docs/sign-in-dbt-extension.md).

Откройте вкладку **Catalog**, чтобы увидеть сведения о текущей модели из аккаунта dbt platform прямо в редакторе.

Для текущей модели на вкладке доступны:

* Статус, время последней сборки и длительность запуска из dbt platform.
* Описание модели (**Description**).
* Столбцы (**Columns**): типы, описания и результаты тестов. Столбцы можно сортировать по алфавиту или по имени теста.
* Ссылка **View in dbt platform**, открывающая ресурс в dbt platform.

[![Вкладка Catalog в расширении dbt для VS Code](/img/docs/extension/vsce-catalog-tab.png?v=2 "Вкладка Catalog в расширении dbt для VS Code")](#)Вкладка Catalog в расширении dbt для VS Code

## Создание системного отчёта

Системный отчёт собирает журналы расширения VS Code и сведения о системе в ZIP-архив. При неполадках его можно отправить в поддержку dbt Labs для диагностики.

Чтобы создать и скачать отчёт:

1. Откройте палитру команд (`Cmd+Shift+P` в macOS или `Ctrl+Shift+P` в Windows/Linux).
2. Найдите и выберите **dbt: Generate System Report**.
3. Укажите, куда сохранить ZIP-архив.
4. Появится уведомление с путём к сохранённому файлу.

## Сравнение изменений при разработке [Бета-версия](https://docs.getdbt.tech/docs/dbt-versions/product-lifecycles "Подробнее о статусе или тарифе")[Enterprise](https://www.getdbt.com/pricing "Подробнее о статусе или тарифе")[Enterprise +](https://www.getdbt.com/pricing "Подробнее о статусе или тарифе")

Использует вашу учетную запись dbt platform

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

(Версии dbt: v2.0 и новее)

Аутентификация выполняется с помощью [`dbt login`](https://docs.getdbt.tech/reference/commands/login.md?version=2.0), поэтому состояние входа в систему общее для CLI, расширения dbt для VS Code и .

Вы можете использовать функцию сравнения изменений на базе dbt v2 в локальной среде разработки, чтобы сравнивать текущую рабочую копию с вашим `manifest.json` (например, с последним состоянием в продакшене) прямо в редакторе.

Подробнее об использовании этой функции см. в разделе [Сравнение изменений при локальной разработке](https://docs.getdbt.tech/docs/dbt/vs-compare-changes.md).

[![Пример вкладки Compare](/img/docs/extension/vs-compare-changes.png?v=2 "Пример вкладки Compare")](#)Пример вкладки Compare
