Выполнение запроса
Подкоманда table query execute
предназначена для надежного исполнения YQL-запросов. Подкоманда обеспечивает успешное исполнение запроса при кратковременной недоступности отдельных партиций таблиц, например, связанной с их разделением или слиянием, за счет применения встроенных политик повторных попыток (retry policies).
Общий вид команды:
ydb [global options...] table query execute [options...]
global options
— глобальные параметры.options
— параметры подкоманды.
Посмотрите описание команды выполнения YQL-запроса:
ydb table query execute --help
Параметры подкоманды
Имя |
Описание |
|
Время, в течение которого должна быть выполнена операция на сервере. |
|
Тип запроса.
Значение по умолчанию — |
|
Режим сбора статистики.
Значение по умолчанию — |
|
Включить сбор статистики в режиме |
|
Режим транзакций (для запросов типа serializable-rw — результат успешно выполненных параллельных транзакций эквивалентен определенному последовательному порядку их выполнения;online-ro — каждое из чтений в транзакции читает последние на момент своего выполнения данные;stale-ro — чтения данных в транзакции возвращают результаты с возможным отставанием от актуальных (доли секунды).Значение по умолчанию — serializable-rw .
|
|
Текст YQL-запроса для выполнения. |
|
Путь к файлу с текстом YQL-запроса для выполнения. |
|
Формат вывода.
|
Работа с параметризованными запросами
Ниже приведена краткая справка, расширенное описание с примерами смотрите в статье Выполнение параметризованных YQL-запросов и скриптов.
Имя | Описание |
---|---|
-p, --param |
Значение одного параметра YQL-запроса в формате $name=value , где $name — имя параметра, а value — его значение (корректный JSON value). |
--param-file |
Имя файла в формате JSON в кодировке UTF-8, в котором заданы значения параметров, сопоставляемые с параметрами YQL-запроса по именам ключей. |
--input-format |
Формат представления значений параметров. Действует на все способы их передачи (через параметр команды, файл или stdin ).Возможные значения: |
--stdin-format |
Формат представления параметров и фрейминг для stdin . Чтобы задать оба значения, укажите параметр дважды.Формат представления параметров на stdin Возможные значения:
stdin не задан, то применяется формат, заданный параметром --input-format .Разделение наборов параметров (фрейминг) для stdin Возможные значения:
|
--columns |
Строка с именами колонок, заменяющими header CSV/TSV документа, читаемого со stdin'а. Имена колонок должны быть в том же формате, что и сам документ. |
--skip-rows |
Число строк с начала данных, читаемых со stdin'a, которые нужно пропустить, не включая строку header'a. |
--stdin-par |
Имя параметра, значение которого будет передано через stdin , указывается без символа $ . |
--batch |
Режим пакетирования значений наборов параметров, получаемых через stdin .Возможные значения:
|
--batch-limit |
Максимальное количество наборов параметров в пакете для адаптивного режима пакетирования. Установка в 0 снимает ограничение.Значение по умолчанию — 1000 . |
--batch-max-delay |
Максимальная задержка отправки на обработку полученного набора параметров для адаптивного режима пакетирования. Задается в виде числа с размерностью времени - s , ms , m .Значение по умолчанию — 1s (1 секунда). |
Примеры
Примечание
В примерах используется профиль quickstart
, подробнее смотрите в Создание профиля для соединения с тестовой БД.
Создание таблиц
ydb -p quickstart table query execute \
--type scheme \
-q '
CREATE TABLE series (series_id Uint64 NOT NULL, title Utf8, series_info Utf8, release_date Date, PRIMARY KEY (series_id));
CREATE TABLE seasons (series_id Uint64, season_id Uint64, title Utf8, first_aired Date, last_aired Date, PRIMARY KEY (series_id, season_id));
CREATE TABLE episodes (series_id Uint64, season_id Uint64, episode_id Uint64, title Utf8, air_date Date, PRIMARY KEY (series_id, season_id, episode_id));
'
Заполнение таблиц данными
ydb -p quickstart table query execute \
-q '
UPSERT INTO series (series_id, title, release_date, series_info) VALUES
(1, "IT Crowd", Date("2006-02-03"), "The IT Crowd is a British sitcom produced by Channel 4, written by Graham Linehan, produced by Ash Atalla and starring Chris O'"'"'Dowd, Richard Ayoade, Katherine Parkinson, and Matt Berry."),
(2, "Silicon Valley", Date("2014-04-06"), "Silicon Valley is an American comedy television series created by Mike Judge, John Altschuler and Dave Krinsky. The series focuses on five young men who founded a startup company in Silicon Valley.");
UPSERT INTO seasons (series_id, season_id, title, first_aired, last_aired) VALUES
(1, 1, "Season 1", Date("2006-02-03"), Date("2006-03-03")),
(1, 2, "Season 2", Date("2007-08-24"), Date("2007-09-28")),
(2, 1, "Season 1", Date("2014-04-06"), Date("2014-06-01")),
(2, 2, "Season 2", Date("2015-04-12"), Date("2015-06-14"));
UPSERT INTO episodes (series_id, season_id, episode_id, title, air_date) VALUES
(1, 1, 1, "Yesterday'"'"'s Jam", Date("2006-02-03")),
(1, 1, 2, "Calamity Jen", Date("2006-02-03")),
(2, 1, 1, "Minimum Viable Product", Date("2014-04-06")),
(2, 1, 2, "The Cap Table", Date("2014-04-13"));
'
Простая выборка данных
ydb -p quickstart table query execute -q '
SELECT season_id, episode_id, title
FROM episodes
WHERE series_id = 1
'
Результат:
┌───────────┬────────────┬───────────────────┐
| season_id | episode_id | title |
├───────────┼────────────┼───────────────────┤
| 1 | 1 | "Yesterday's Jam" |
├───────────┼────────────┼───────────────────┤
| 1 | 2 | "Calamity Jen" |
└───────────┴────────────┴───────────────────┘
Неограниченная по размеру выборка для автоматизированной обработки
Выборка данных запросом, текст которого сохранен в файле, без ограничения на количество строк в выборке, с выводом в формате Newline-delimited JSON stream.
Запишем текст запроса в файл request1.yql
:
echo 'SELECT season_id, episode_id, title FROM episodes' > request1.yql
Выполним запрос:
ydb -p quickstart table query execute -f request1.yql --type scan --format json-unicode
Результат:
{"season_id":1,"episode_id":1,"title":"Yesterday's Jam"}
{"season_id":1,"episode_id":2,"title":"Calamity Jen"}
{"season_id":1,"episode_id":1,"title":"Minimum Viable Product"}
{"season_id":1,"episode_id":2,"title":"The Cap Table"}
Передача параметров
Примеры исполнения параметризованных запросов, включая потоковое исполнение, приведены в статье Передача параметров в команды исполнения YQL.