BioETL command-line interface (CLI) - основной способ взаимодействия с системой. Построен на фреймворке Click для стабильности и расширяемости.
Версия: 6.0.0 Дата обновления: 2026-03-02
# Рекомендуемый способ (после установки)
bioetl <command> [options]
# Или во время разработки
python -m bioetl.interfaces.cli <command> [options]Для справки по любой команде добавьте --help:
bioetl --help
bioetl run --helpВыполняет ETL-пайплайн для указанной сущности.
Синтаксис:
bioetl run --pipeline <NAME> [OPTIONS]Обязательные параметры:
| Параметр | Описание |
|---|---|
--pipeline <NAME> |
Имя пайплайна (соответствует YAML в configs/entities/) |
Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--run-type |
choice | incremental |
Тип запуска: incremental, backfill, rebuild |
--limit |
int | None | Максимальное количество записей |
--resume |
flag | False | Продолжить с последнего checkpoint |
--dry-run |
flag | False | Предпросмотр без записи данных |
--yes, -y |
flag | False | Пропустить подтверждение для rebuild/backfill |
--input-csv |
path | None | Путь к CSV с ID для фильтрации |
--filter-column |
str | id |
Имя колонки в CSV с ID |
--filter-field |
str | varies | Поле API для фильтрации |
--vacuum-after-run |
flag | None | Запустить VACUUM после успешного выполнения |
--vacuum-retention-days |
int | 7 | Retention для VACUUM (дней) |
--debug |
flag | False | Включить DEBUG логирование |
--health-server/--no-health-server |
flag | True | Включить HTTP health server |
--health-port |
int | 8081 | Порт для health server |
Примеры:
# Инкрементальный запуск (по умолчанию)
bioetl run --pipeline chembl_activity
# С ограничением записей (для тестирования)
bioetl run --pipeline chembl_activity --limit 100
# Полная перезагрузка данных
bioetl run --pipeline chembl_activity --run-type rebuild --yes
# Предпросмотр очистки без выполнения
bioetl run --pipeline chembl_activity --run-type rebuild --dry-run
# Продолжить прерванный запуск
bioetl run --pipeline chembl_activity --resume
# С фильтрацией по CSV
bioetl run --pipeline chembl_activity \
--input-csv data/filter-ids.csv \
--filter-column molecule-id \
--filter-field molecule-chembl-id
# С DEBUG логированием
bioetl run --pipeline chembl_activity --debugТипы запуска:
| Тип | Описание | Очистка данных |
|---|---|---|
incremental |
Обработка новых записей с последнего checkpoint | Нет |
backfill |
Обработка определённого диапазона | Silver/Gold |
rebuild |
Полная перезагрузка всех данных | Bronze/Silver/Gold |
Exit Codes:
| Код | Значение |
|---|---|
| 0 | Успешное выполнение |
| 82 | Ошибка выполнения пайплайна |
| 83 | Превышен порог Data Quality |
| 84 | Ошибка захвата блокировки |
| 86 | Сетевая ошибка |
| 130 | Прервано (Ctrl+C) |
Последовательно выполняет все пайплайны для указанного провайдера.
Синтаксис:
bioetl run-all --source <PROVIDER> [OPTIONS]Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--source |
str | Required | Имя провайдера (chembl, pubchem, uniprot и др.) |
--run-type |
choice | incremental |
Тип запуска |
--limit |
int | None | Лимит записей для каждого пайплайна |
--dry-run |
flag | False | Показать пайплайны без выполнения |
--yes, -y |
flag | False | Пропустить подтверждение |
--list-only |
flag | False | Только показать список пайплайнов |
--debug |
flag | False | DEBUG логирование |
Примеры:
# Запуск всех ChEMBL пайплайнов
bioetl run-all --source chembl
# Только просмотр списка
bioetl run-all --source chembl --list-only
# Предпросмотр
bioetl run-all --source pubchem --dry-run
# Rebuild всех пайплайнов провайдера
bioetl run-all --source chembl --run-type rebuild --yesВыполняет композитный пайплайн (seed + enrichers) согласно ADR-026.
Синтаксис:
bioetl run-composite --composite <NAME> [OPTIONS]Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--composite |
str | Required | Имя композитного пайплайна |
--resume |
flag | False | Продолжить с checkpoint |
--dry-run |
flag | False | Предпросмотр без записи |
--seed-limit |
int | None | Лимит записей для seed пайплайна |
--enrich-only |
str | None | Запустить только указанные enrichers (через запятую) |
--required-only |
flag | False | Пропустить опциональные enrichers |
--force-enricher |
str | None | Принудительный перезапуск enricher |
--debug |
flag | False | DEBUG логирование |
Примеры:
# Запуск композитного пайплайна публикаций
bioetl run-composite --composite publication
# С ограничением seed
bioetl run-composite --composite publication --seed-limit 100
# Только определённые enrichers
bioetl run-composite --composite publication --enrich-only crossref,openalex
# Только обязательные enrichers
bioetl run-composite --composite publication --required-onlyУтилиты для просмотра и валидации архитектурных решений (Architecture Decision Records).
bioetl adr list [--json]bioetl adr show <NUMBER> [--raw]bioetl adr validate [--json]Экспортирует Delta-таблицы Silver/Gold в CSV, XLSX или TSV.
Синтаксис:
bioetl export [TABLE] [OPTIONS]Аргументы:
| Аргумент | Описание |
|---|---|
TABLE |
Имя таблицы в формате provider.entity (опционально при --list) |
Опции:
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--list |
flag | False | Показать все доступные таблицы |
--preview |
flag | False | Показать схему и sample данных |
--format, -f |
choice | csv |
Формат: csv, xlsx, tsv |
--layer, -l |
choice | silver |
Слой: silver, gold |
--output, -o |
path | data/exports |
Директория для экспорта |
--limit |
int | None | Максимальное количество строк |
--columns, -c |
str | None | Колонки для экспорта (через запятую) |
Примеры:
# Список всех таблиц
bioetl export --list
# Предпросмотр таблицы
bioetl export chembl.activity --preview
# Экспорт в CSV (по умолчанию)
bioetl export chembl.activity
# Экспорт в Excel
bioetl export chembl.activity --format xlsx
# С ограничением строк и колонок
bioetl export chembl.activity --limit 10000 --columns id,name,value
# Экспорт Gold-слоя
bioetl export chembl.activity --layer gold
# В указанную директорию
bioetl export chembl.activity -o ./my-exportsПросмотр и валидация конфигурации пайплайнов.
bioetl config show <PIPELINE> [--format yaml|json]Примеры:
bioetl config show chembl_activity
bioetl config show chembl_activity --format jsonbioetl config validate <PIPELINE>Выводит: Provider, Entity type, Silver table, Gold table (если есть).
bioetl config show-settings [--format yaml|json]Показывает все BIOETL-* переменные окружения (API-ключи маскируются).
bioetl config list-pipelinesDashboard для работы с проблемными записями.
bioetl quarantine inspect --pipeline <NAME> [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--pipeline |
str | Required | Имя пайплайна |
--limit |
int | 100 | Максимум записей |
--error-code |
str | None | Фильтр по коду ошибки |
Примеры:
bioetl quarantine inspect --pipeline chembl_activity
bioetl quarantine inspect --pipeline chembl_activity --error-code DQ-MISSING-FIELDbioetl quarantine stats --pipeline <NAME> [--json]Показывает: общее количество, распределение по кодам ошибок, статусы (NEW, REVIEWED, RESOLVED).
bioetl quarantine replay --pipeline <NAME> [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--pipeline |
str | Required | Имя пайплайна |
--error-code |
str | None | Фильтр по коду ошибки |
--max-age-days |
int | 7 | Максимальный возраст записей |
--dry-run |
flag | False | Предпросмотр |
bioetl quarantine purge --pipeline <NAME> [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--older-than-days |
int | 30 | Удалить записи старше N дней |
--dry-run |
flag | False | Предпросмотр |
--force |
flag | False | Без подтверждения |
bioetl quarantine resolve --pipeline <NAME> --payload-hash <HASH> [--status IGNORED|REPROCESSED]bioetl checkpoint list --pipeline <NAME>bioetl health server [--host 127.0.0.1] [--port 8081]Endpoints:
GET /health— общий статусGET /health/live— Kubernetes liveness probeGET /health/ready— Kubernetes readiness probeGET /health/providers— детальный статус провайдеров
bioetl health check [--provider chembl] [--json]Проверяет connectivity и health всех или указанных провайдеров.
Примеры:
bioetl health check
bioetl health check --provider chembl --provider pubchem
bioetl health check --jsonbioetl lock release --pipeline <NAME> --run-id <UUID> [--exclusive]Внимание: Используйте только если уверены, что пайплайн не выполняется.
bioetl lock check --pipeline <NAME> --run-id <UUID>bioetl maintenance vacuum <TABLE> [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--retention-days, -r |
int | 7 | Минимальный возраст файлов |
--dry-run |
flag | False | Предпросмотр |
Примеры:
bioetl maintenance vacuum chembl.activity
bioetl maintenance vacuum chembl.activity --dry-run
bioetl maintenance vacuum chembl.activity -r 30bioetl maintenance vacuum-all [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--retention-days, -r |
int | 7 | Минимальный возраст файлов |
--dry-run |
flag | False | Предпросмотр |
--layer |
choice | all |
Слой: all, silver, gold |
bioetl maintenance archive <TABLE> <TARGET-PATH> [--remove-source]bioetl maintenance bronze-cleanup [OPTIONS]| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
--retention-days, -r |
int | 90 | Удалить файлы старше N дней |
--dry-run |
flag | False | Предпросмотр |
| Переменная | Описание | По умолчанию |
|---|---|---|
BIOETL_ENV |
Окружение (dev, prod) |
dev |
BIOETL_DATA_DIR |
Директория данных | ./data |
BIOETL_LOG_LEVEL |
Уровень логирования | INFO |
BIOETL_METRICS_ENABLED |
Включить Prometheus метрики | true |
BIOETL_METRICS_PORT |
Порт для Prometheus | 8000 |
BIOETL_TRACING_ENABLED |
Включить OpenTelemetry tracing | false |
API-ключи провайдеров:
BIOETL_UNIPROT_API_KEYBIOETL_OPENALEX_EMAILBIOETL_SEMANTICSCHOLAR_API_KEY
Коды возврата следуют стандартам Unix (sysexits.h):
| Код | Константа | Описание |
|---|---|---|
| 0 | OK | Успешное выполнение |
| 1 | FAIL | Неспецифицированная ошибка |
| 64 | EX_USAGE | Ошибка использования командной строки |
| 65 | EX_DATAERR | Ошибка формата данных |
| 66 | EX_NOINPUT | Не удалось открыть входные данные |
| 67 | EX_NOUSER | Адресат неизвестен |
| 68 | EX_NOHOST | Имя хоста неизвестно |
| 69 | EX_UNAVAILABLE | Сервис недоступен |
| 70 | EX_SOFTWARE | Внутренняя ошибка ПО |
| 71 | EX_OSERR | Ошибка ОС |
| 72 | EX_OSFILE | Отсутствует критический файл ОС |
| 73 | EX_CANTCREAT | Не удалось создать выходной файл |
| 74 | EX_IOERR | Ошибка ввода-вывода |
| 75 | EX_TEMPFAIL | Временная ошибка |
| 76 | EX_PROTOCOL | Ошибка протокола |
| 77 | EX_NOPERM | Отказано в доступе |
| 78 | EX_CONFIG | Ошибка конфигурации |
| 80 | CONFIG_ERROR | Ошибка конфигурации пайплайна |
| 81 | INIT_ERROR | Ошибка инициализации |
| 82 | PIPELINE_ERROR | Ошибка выполнения пайплайна |
| 83 | DATA_QUALITY_ERROR | Превышен DQ порог |
| 84 | LOCK_ERROR | Ошибка блокировки |
| 85 | STORAGE_ERROR | Ошибка хранилища |
| 86 | NETWORK_ERROR | Сетевая ошибка |
| 87 | CHECKPOINT_ERROR | Ошибка checkpoint |
| 130 | SIGINT | Прервано Ctrl+C |
| 143 | SIGTERM | Завершено SIGTERM |
- Running Pipelines — руководство по запуску
- Pipeline Configuration — настройка конфигураций
- Metrics & Monitoring — метрики и мониторинг
- Troubleshooting — решение проблем