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 |
Полезные настройки¶
{
"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.
Настройка подключения¶
Database→New Database Connection;- Выбери PostgreSQL;
- Заполни: Host, Port, Database, Username, Password;
Test Connection→Finish.
DBeaver vs SQLTools
SQLTools в VS Code — для быстрых запросов и навигации, не выходя из редактора. DBeaver — для сложного анализа схем, ER-диаграмм и массового экспорта данных. Используй оба.
Терминал¶
Оболочка: zsh + Oh My Zsh¶
# Установить 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 |
Подсветка команд в терминале |
tmux — несколько окон в одной сессии¶
# Новая сессия
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¶
pip install sqlfluff
# Проверить файл
sqlfluff lint models/staging/stg_orders.sql
# Исправить автоматически
sqlfluff fix models/staging/stg_orders.sql
[sqlfluff]
dialect = postgres
templater = dbt
max_line_length = 120
[sqlfluff:rules:capitalisation.keywords]
capitalisation_policy = upper
ruff — линтер и форматтер Python¶
Подробнее о ruff — в статье Python: основы для DE.
pre-commit — автоматические проверки¶
pre-commit запускает линтеры автоматически перед каждым коммитом.
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]
# Установить хуки
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 | Автоматические проверки |
Проверь себя¶
Источники¶
- VS Code Documentation — полная документация
- DBeaver Documentation — подключения и возможности
- SQLFluff Documentation — настройка и правила
- pre-commit Documentation — конфигурация хуков
- Oh My Zsh — плагины и темы для zsh