---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/flow/yql/getting-started.md
  - https://ytsaurus.tech/docs/ru/flow/yql/getting-started.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/flow/yql/getting-started.md -->
# Быстрый старт в YTsaurus Flow (YQL)

YQL over Flow позволяет описать [пайплайн](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#pipeline) потоковой обработки данных в виде декларативного SQL-запроса — без написания кода на [C++](https://ytsaurus.tech/docs/ru/flow/cpp/getting-started.md), [Java](https://ytsaurus.tech/docs/ru/flow/java/getting-started.md), [Go](https://ytsaurus.tech/docs/ru/flow/go/getting-started.md) или [Python](https://ytsaurus.tech/docs/ru/flow/python/getting-started.md). Пайплайн запускается как ванилла операция на выбранном кластере YTsaurus.

{% note warning %}

Находится в активной разработке, ещё не вся запланированная функциональность доступна.

{% endnote %}


## Полезные ссылки

- [Документация YQL](https://ytsaurus.tech/docs/ru/yql/index.md) — полный справочник по синтаксису YQL
- [YQL провайдер YT Flow](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yql/providers/ytflow) — исходный код

## Прагмы {#pragmas}

Запрос YQL over Flow управляется через набор прагм:

| Прагма | Описание |
|---|---|
| `PRAGMA Engine = "ytflow";` | Выбор движка Flow для выполнения запроса |
| `PRAGMA Ytflow.Cluster = "...";` | Кластер для внутренних таблиц пайплайна и выходных упорядоченных очередей |
| `PRAGMA Ytflow.RuntimeCluster = "...";` | Кластер для запуска ванилла операции. |
| `PRAGMA Ytflow.PipelineDirectory = "...";` | Путь к директории с пайплайнами в YTsaurus |
| `PRAGMA Ytflow.PipelineName = "...";` | Имя пайплайна. Полный путь: `{pipeline_directory}/{pipeline_name}` |
| `PRAGMA Ytflow.WorkerCount = "...";` | Количество воркер-джобов ванилла операции |
| `PRAGMA Ytflow.EnableComputationPatternResources = "true";` | Включает переиспользование шаблонов вычислений между графами одного воркера. По умолчанию `false` |

## Первый запрос {#first-query}

Пример: построчное преобразование [стрима](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#stream-and-computation) (мап).

```yql
-- выбрать движок Flow
PRAGMA Engine = "ytflow";

-- кластер для внутренних таблиц пайплайна
PRAGMA Ytflow.Cluster = "<cluster-name>";
-- кластер для ванилла операции
PRAGMA Ytflow.RuntimeCluster = "<cluster-name>";
-- директория с пайплайнами
PRAGMA Ytflow.PipelineDirectory = "//home/my-project/pipelines";
-- имя пайплайна
PRAGMA Ytflow.PipelineName = "my-pipeline";
-- число воркеров
PRAGMA Ytflow.WorkerCount = "1";

-- читать из входной очереди, трансформировать, писать в выходную
INSERT INTO
    <cluster-name>.`//home/my-project/output_queues/sink_queue`
SELECT
    string_field || "_processed" AS string_field,
    int64_field,
    EndsWith(string_field, "bar") AS predicate
FROM
    <cluster-name>.`//home/my-project/input_queues/source_queue`
WHERE int64_field > 1;
```

Запрос запускает пайплайн, который непрерывно обрабатывает сообщения из входной очереди и пишет результаты в выходную. Схемы выходных таблиц выводятся автоматически из запроса.

Описание всех поддержанных конструкций YQL см. в разделе [Поддержанные конструкции](https://ytsaurus.tech/docs/ru/flow/yql/features.md).



## Как запустить {#how-to-run}

{% note info "Пререквизиты" %}

Нужно иметь права на чтение и запись во все упоминаемые в запросе директории, а также вычислительную квоту на кластере YTsaurus, указанном как `Ytflow.RuntimeCluster`.

{% endnote %}

Есть два способа запустить запрос:

**Через UI YTsaurus**: откройте вкладку **Queries** на рантайм кластере и выполните запрос.

**Через Python-клиент**:

```python
from yt.wrapper import YtClient

# любой продакшн кластер
client = YtClient('<cluster-name>')

# запустить запрос и дождаться завершения
client.run_query(
    engine='yql',
    settings=dict(
        # рантайм кластер передаётся здесь
        cluster='<cluster-name>',
    ),
    query='<YQL query>',
    sync=True,
)
```

После завершения запроса на кластере запустится пайплайн, который будет выполняться непрерывно. Если пайплайн с таким именем уже существует — он остановится с дообработкой всех внутренних потоков, после чего запустится новая версия.

## Мониторинг {#monitoring}

Для отслеживания работы запущенного пайплайна доступны:

- **Дашборд** — вкладка **Flow → Monitoring**.
- **Логи контроллера** (состояние воркеров, возможные проблемы):
  ```bash
  yt --proxy <кластер-пайплайна> flow show-logs //home/my-project/pipelines/my-pipeline
  ```
- **Логи джобов** — через ванилла операцию, доступную по ссылке из кубика `flowPublish` в графе пайплайна.

## См. также

- [Поддержанные конструкции](https://ytsaurus.tech/docs/ru/flow/yql/features.md)
- [Основные понятия](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md)
- [Коннекторы](https://ytsaurus.tech/docs/ru/flow/connectors/about.md)
<!-- endsource: ru/_includes/flow/yql/getting-started.md -->
