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

# Введение

YQL (Yandex Query Language) &mdash; универсальный декларативный язык запросов к системам хранения и обработки данных, а также инфраструктура для их выполнения. К преимуществам YQL можно отнести:

- мощный графовый движок исполнения, который строит MapReduce-pipelines из сотен узлов и может адаптивно перестраиваться по ходу вычисления;
- возможность построения сложного конвейера обработки данных на SQL с сохранением подзапросов в переменные в виде цепочек зависимых запросов и транзакций;
- предсказуемое параллельное исполнение запросов произвольной сложности;
- эффективная реализация join-ов, подзапросов и оконных функций без ограничений на их топологию и вложенность;
- богатая библиотека функций;
- поддержка пользовательских функций на [C++](https://ytsaurus.tech/docs/ru/yql/udf/cpp.md), [Python](https://ytsaurus.tech/docs/ru/yql/udf/python.md);
- автоматическое исполнение небольших частей запросов на заранее подготовленных вычислительных инстансах в обход MapReduce-операций для уменьшения времени выполнения.


YQL предоставляет функциональный веб-интерфейс, в котором среди прочего можно:
- писать код запросов;
- запускать и останавливать выполнение запросов;
- просматривать результат выполнения запросов;
- просматривать историю запросов.


## Как попробовать

Чтобы запустить свой первый YQL-запрос:
1. Откройте веб-интерфейс YTsaurus кластера  и перейдите на вкладку **Queries** &mdash; на неё можно попасть из меню слева.

2. Введите запрос и нажмите кнопку запуска:

   ```yql
   SELECT "Hello, World!";
   ```

   ![](../../images/yql-how-to-try.png){ .center }

## Глоссарий

<!-- source: ru/yql/_includes/glossary.md -->
#|
|| **Термин** | **Перевод на английский**  | **Описание** ||
|| Запрос | Query | Текст программы на YQL ||
|| Операция | Operation | Процесс выполнения конкретного запроса (query). Запрос и операция в терминологии YQL соотносятся примерно так же, как программа и процесс в операционной системе ||
|| Таблица | Table | Логически таблица — список структур (`List<Struct<...>>`), который является базовым примитивом при обработке больших объемов данных на YQL.

Элементы списка образуют строки (row), а элементы каждой структуры (member) являются ячейками таблиц. А множество находящихся друг под другом ячеек, соответственно, образуют колонку таблицы (column) ||
|| Выражение | Expression | Любое вычисляемое значение. Как правило принимают на вход одну или несколько ячеек таблицы и результат становится ячейкой другой таблицы. Примеры:
- `2 * 2;`
- `String::ToUpper("hi, " \|\| name \|\| "!")`
||
|| Выражение верхнего уровня | Statement | Составные части запроса (query), разделенные точкой с запятой и начинающиеся с глагола. Примеры:
- `SELECT ...;`
- `INSERT INTO ... SELECT ... ;`
- `REDUCE ... USING ... ON ...;`
||
|| Подзапрос | Subquery | Составная часть запроса, которая наравне с таблицами может использоваться как вход для выражений верхнего уровня (statements) или других подзапросов. Опционально подзапросы могут быть [параметризованными](https://ytsaurus.tech/docs/ru/yql/syntax/subquery.md) ||
|| Именованное выражение | Named node | Механизм для повторного использования выражений (expression) и подзапросов (subquery) в рамках одного запроса (query). [Подробнее](https://ytsaurus.tech/docs/ru/yql/syntax/expressions.md#named-nodes)

Примеры:
- `$foo = 2 + 2;`
- `$bar = (SELECT bar FROM my_table);` ||
|| Лямбда функция | Lambda | Параметризуемый блок из одного или нескольких именованных выражений (только с expression, не верхнего уровня), результат последнего из которых становится результатом вызова всей лямбды. Вызов осуществляется с помощью передачи параметров в круглые скобки. [Подробнее](https://ytsaurus.tech/docs/ru/yql/syntax/expressions.md#lambda) ||
|| Пользовательская функция | UDF (User Defined Function)  | Возможность встроить в запрос бизнес-логику на одном из поддерживаемых распространённых языков программирования.

UDF на [C++](https://ytsaurus.tech/docs/ru/yql/udf/cpp.md) подключаются в скомпилированном в `.so` виде, а также доступен широкий набор [предустановленных](https://ytsaurus.tech/docs/ru/yql/udf/list/pcre.md). UDF на [Python](https://ytsaurus.tech/docs/ru/yql/udf/python.md) могут использовать скрипт из любой строки внутри запроса, но требуют дополнительного описания своей сигнатуры.

Так как оптимизатор YQL не умеет «заглядывать» внутрь интерпретатора Python, то с точки зрения производительности **рекомендуется предпочитать использовать лямбда функции и C++ UDF** ||
|| Действие | Action | Параметризуемый блок из одного нескольких выражений верхнего уровня (statements), который затем может вызвать необходимое число раз с помощью специальных предназначенных для этого ключевых слов. В отличие от лямбда функций **не** возвращают никакого результата. [Подробнее](https://ytsaurus.tech/docs/ru/yql/syntax/action.md) ||
|| Библиотека | Library | Часть запроса, вынесенная в отдельный файл для повторного использования или просто удобства. [Подробнее](https://ytsaurus.tech/docs/ru/yql/syntax/export_import.md) ||
|#
<!-- endsource: ru/yql/_includes/glossary.md -->
