Введение
YQL (Yandex Query Language) — универсальный декларативный язык запросов к системам хранения и обработки данных, а также инфраструктура для их выполнения. К преимуществам YQL можно отнести:
- мощный графовый движок исполнения, который строит MapReduce-pipelines из сотен узлов и может адаптивно перестраиваться по ходу вычисления;
- возможность построения сложного конвейера обработки данных на SQL с сохранением подзапросов в переменные в виде цепочек зависимых запросов и транзакций;
- предсказуемое параллельное исполнение запросов произвольной сложности;
- эффективная реализация join-ов, подзапросов и оконных функций без ограничений на их топологию и вложенность;
- богатая библиотека функций;
- поддержка пользовательских функций на C++, Python;
- автоматическое исполнение небольших частей запросов на заранее подготовленных вычислительных инстансах в обход MapReduce-операций для уменьшения времени выполнения.
YQL предоставляет функциональный веб-интерфейс, в котором среди прочего можно:
- писать код запросов;
- запускать и останавливать выполнение запросов;
- просматривать результат выполнения запросов;
- просматривать историю запросов.
Как попробовать
Чтобы запустить свой первый YQL-запрос:
-
Откройте веб-интерфейс YTsaurus кластера и перейдите на вкладку Queries — на неё можно попасть из меню слева.
-
Введите запрос и нажмите кнопку запуска:
SELECT "Hello, World!";
Глоссарий
Термин |
Перевод на английский |
Описание |
Запрос |
Query |
Текст программы на YQL |
Операция |
Operation |
Процесс выполнения конкретного запроса (query). Запрос и операция в терминологии YQL соотносятся примерно так же, как программа и процесс в операционной системе |
Таблица |
Table |
Логически таблица — список структур ( Элементы списка образуют строки (row), а элементы каждой структуры (member) являются ячейками таблиц. А множество находящихся друг под другом ячеек, соответственно, образуют колонку таблицы (column) |
Выражение |
Expression |
Любое вычисляемое значение. Как правило принимают на вход одну или несколько ячеек таблицы и результат становится ячейкой другой таблицы. Примеры:
|
Выражение верхнего уровня |
Statement |
Составные части запроса (query), разделенные точкой с запятой и начинающиеся с глагола. Примеры:
|
Подзапрос |
Subquery |
Составная часть запроса, которая наравне с таблицами может использоваться как вход для выражений верхнего уровня (statements) или других подзапросов. Опционально подзапросы могут быть параметризованными |
Именованное выражение |
Named node |
Механизм для повторного использования выражений (expression) и подзапросов (subquery) в рамках одного запроса (query). Подробнее Примеры:
|
Лямбда функция |
Lambda |
Параметризуемый блок из одного или нескольких именованных выражений (только с expression, не верхнего уровня), результат последнего из которых становится результатом вызова всей лямбды. Вызов осуществляется с помощью передачи параметров в круглые скобки. Подробнее |
Пользовательская функция |
UDF (User Defined Function) |
Возможность встроить в запрос бизнес-логику на одном из поддерживаемых распространённых языков программирования. UDF на C++ подключаются в скомпилированном в Так как оптимизатор YQL не умеет «заглядывать» внутрь интерпретатора Python, то с точки зрения производительности рекомендуется предпочитать использовать лямбда функции и C++ UDF |
Действие |
Action |
Параметризуемый блок из одного нескольких выражений верхнего уровня (statements), который затем может вызвать необходимое число раз с помощью специальных предназначенных для этого ключевых слов. В отличие от лямбда функций не возвращают никакого результата. Подробнее |
Библиотека |
Library |
Часть запроса, вынесенная в отдельный файл для повторного использования или просто удобства. Подробнее |