Перейти к содержанию

IDE и рабочее окружение

Правильно настроенная среда экономит часы каждую неделю. В этой статье — инструменты, которые дата-инженер использует ежедневно: редактор кода, клиент для баз данных, терминал и автоматические проверки.


VS Code

VS Code — основной редактор для большинства дата-инженеров. Лёгкий, расширяемый, бесплатный.

Расширения для DE

Расширение Зачем
Python (Microsoft) Автодополнение, отладка, venv
Pylance Быстрая типизация и навигация по коду
SQLTools + драйвер PostgreSQL SQL-запросы прямо из редактора
dbt Power User Навигация по моделям, preview, lineage
Docker Управление контейнерами из sidebar
YAML (Red Hat) Валидация docker-compose.yml, schema.yml
GitLens Blame, история файла, сравнение веток
Remote - SSH Работа на удалённом сервере как локально
Even Better TOML Подсветка pyproject.toml

Полезные настройки

settings.json
{
    "editor.formatOnSave": true,
    "editor.rulers": [120],
    "files.trimTrailingWhitespace": true,
    "files.insertFinalNewline": true,
    "python.defaultInterpreterPath": ".venv/bin/python",
    "[python]": {
        "editor.defaultFormatter": "charliermarsh.ruff"
    },
    "[sql]": {
        "editor.tabSize": 4
    }
}

Горячие клавиши

Комбинация Действие
Ctrl+P Быстрое открытие файла
Ctrl+Shift+P Палитра команд
Ctrl+Shift+F Поиск по проекту
Ctrl+`` Открыть терминал
F12 Перейти к определению
Ctrl+Shift+E Файловый explorer
Ctrl+K Ctrl+S Горячие клавиши

Remote SSH

Если твой Airflow и базы на сервере — используй Remote SSH. Ты работаешь в VS Code как обычно, но файлы и терминал — на удалённой машине. Расширения тоже работают удалённо.


DBeaver

DBeaver — универсальный клиент для баз данных. Поддерживает PostgreSQL, Greenplum, MySQL, ClickHouse и десятки других.

Зачем DBeaver дата-инженеру

  • Просмотр данных — таблицы, схемы, зависимости;
  • SQL-редактор — автодополнение, подсветка, форматирование;
  • ER-диаграммы — визуализация связей между таблицами;
  • Экспорт — результаты запроса в CSV, JSON, SQL;
  • Сравнение схем — различия между dev и prod.

Настройка подключения

  1. DatabaseNew Database Connection;
  2. Выбери PostgreSQL;
  3. Заполни: Host, Port, Database, Username, Password;
  4. Test ConnectionFinish.

DBeaver vs SQLTools

SQLTools в VS Code — для быстрых запросов и навигации, не выходя из редактора. DBeaver — для сложного анализа схем, ER-диаграмм и массового экспорта данных. Используй оба.


Терминал

Оболочка: zsh + Oh My Zsh

Bash
# Установить zsh
sudo apt install zsh

# Установить Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Полезные плагины Oh My Zsh:

Плагин Зачем
git Алиасы: gst (status), gco (checkout), gp (push)
docker Автодополнение для Docker
zsh-autosuggestions Подсказки из истории
zsh-syntax-highlighting Подсветка команд в терминале
~/.zshrc
plugins=(git docker zsh-autosuggestions zsh-syntax-highlighting)

tmux — несколько окон в одной сессии

Bash
# Новая сессия
tmux new -s etl

# Разделить экран горизонтально
Ctrl+B, "

# Разделить вертикально
Ctrl+B, %

# Переключение между панелями
Ctrl+B, стрелка

# Отключиться (сессия продолжает работать)
Ctrl+B, d

# Подключиться обратно
tmux attach -t etl

tmux на сервере

Запускай долгие процессы (ETL, миграции) внутри tmux. Если SSH-сессия оборвётся, процесс продолжит работу. tmux attach — и ты снова в той же сессии.


Линтеры и форматтеры

SQLFluff — линтер для SQL

Bash
pip install sqlfluff

# Проверить файл
sqlfluff lint models/staging/stg_orders.sql

# Исправить автоматически
sqlfluff fix models/staging/stg_orders.sql
.sqlfluff
[sqlfluff]
dialect = postgres
templater = dbt
max_line_length = 120

[sqlfluff:rules:capitalisation.keywords]
capitalisation_policy = upper

ruff — линтер и форматтер Python

Bash
# Проверить
ruff check .

# Исправить
ruff check --fix .

# Отформатировать
ruff format .

Подробнее о ruff — в статье Python: основы для DE.


pre-commit — автоматические проверки

pre-commit запускает линтеры автоматически перед каждым коммитом.

Bash
pip install pre-commit
.pre-commit-config.yaml
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.6.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-yaml
      - id: check-json
      - id: check-added-large-files
        args: ['--maxkb=1000']

  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.7.0
    hooks:
      - id: ruff
        args: [--fix]
      - id: ruff-format

  - repo: https://github.com/sqlfluff/sqlfluff
    rev: 3.2.0
    hooks:
      - id: sqlfluff-lint
        args: [--dialect, postgres]
Bash
# Установить хуки
pre-commit install

# Запустить на всех файлах (первый раз)
pre-commit run --all-files

Зачем pre-commit

Без pre-commit линтеры запускаются вручную — и забываются. Pre-commit гарантирует, что код прошёл проверки до попадания в Git. В CI/CD это тоже можно проверять, но pre-commit ловит проблемы раньше.


Сводка: минимальный набор DE

Категория Инструмент Зачем
Редактор VS Code + Remote SSH Код, DAG, SQL
БД-клиент DBeaver Схемы, запросы, ER-диаграммы
Терминал zsh + tmux Навигация, долгие процессы
Python-линтер ruff Быстрый lint + format
SQL-линтер SQLFluff Единый стиль SQL
Хуки pre-commit Автоматические проверки

Проверь себя


Источники