Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
  • Оглавление
  • Начало работы
    • Обзор
    • Создание базы данных
    • Аутентификация
    • Интерфейс командной строки YDB CLI
    • Язык запросов YQL
    • YDB SDK
    • Самостоятельное развертывание
      • Обзор
      • Docker
      • Бинарный файл
      • Minikube
    • Полезные ссылки
    • Document API, совместимый с Amazon DynamoDB
      • Настройка инструментов AWS
      • Работа с данными через HTTP-интерфейс
      • Работа с AWS CLI
        • Обзор
        • Создание таблицы
        • Добавление данных в таблицу
        • Чтение данных из таблицы
        • Обновление данных
        • Выборка данных
        • Удаление созданных ресурсов
      • Работа с AWS SDK
        • Обзор
        • Создание таблицы
        • Загрузка данных в таблицу
        • Управление записями в таблице
          • Создание записи
          • Чтение записи
          • Обновление записи
          • Удаление записи
        • Поиск и извлечение данных
        • Удаление таблицы
  • Практические руководства
    • Развертывание веб-приложения
    • Разработка Slack-бота
    • Подключение к YDB из функции Yandex Cloud Functions на Python
    • Подключение к базе данных YDB из функции Yandex Cloud Functions на Node.js
    • Конвертация видео в GIF на Python
    • Разработка навыка Алисы и сайта с авторизацией
  • Концепции
    • Обзор
    • Термины и определения
    • Соединение с БД и аутентификация
    • Модель данных и схема
    • Режимы работы Serverless и Dedicated
    • Транзакции
    • Вторичные индексы
    • Time to Live (TTL)
    • Скан запросы
    • Ограничения базы данных
    • Кластер YDB
      • Обзор
      • Общая схема YDB
      • Дисковая подсистема кластера
    • Квоты и лимиты
  • Пошаговые инструкции
    • Обзор
    • Переименование
    • Использование плана запроса и AST
    • Чтение и запись данных
    • Работа со вторичными индексами
  • Рекомендации
    • Обзор
    • Выбор первичного ключа для максимальной производительности
    • Вторичные индексы
    • Постраничный вывод
    • Загрузка больших объемов данных
    • Использование таймаутов
  • Управление базами данных
    • Обзор
    • Облачная консоль управления
      • Обзор
      • Создание, изменение, удаление баз данных
      • Таблицы и директории
      • Управление доступом
    • Интерфейс командной строки YC CLI
    • Резервное копирование и восстановление
    • Диагностика
      • Обзор
      • Системные таблицы
      • Мониторинг
  • Правила тарификации
    • Обзор
    • Бессерверный режим
      • Правила тарификации для бессерверного режима
      • Стоимость запроса для YQL
      • Стоимость запроса для Document API
      • Стоимость запроса для специальных API
    • Режим с выделенными инстансами
  • HTTP API, совместимый с Amazon DynamoDB
    • Все методы
    • Actions
      • BatchGetItem
      • BatchWriteItem
      • CreateTable
      • DeleteItem
      • DeleteTable
      • DescribeTable
      • DescribeTimeToLive
      • GetItem
      • ListTables
      • PutItem
      • Query
      • Scan
      • TransactGetItems
      • TransactWriteItems
      • UpdateItem
      • UpdateTimeToLive
    • Общие ошибки
  • YQL
    • Обзор
    • Типы данных
      • Обзор
      • Простые
      • Опциональные
      • Контейнеры
      • Специальные
      • Преобразования типов
      • Текстовое представление типов данных
      • JSON
    • Синтаксис
      • Обзор
      • Лексическая структура
      • Выражения
      • ACTION
      • ALTER TABLE
      • CREATE TABLE
      • DECLARE
      • DELETE
      • DISCARD
      • DROP TABLE
      • GROUP BY
      • FLATTEN
      • INSERT
      • INTO RESULT
      • JOIN
      • PRAGMA
      • REPLACE
      • SELECT
      • UPDATE
      • UPSERT
      • VALUES
      • WINDOW
      • Неподдерживаемые конструкции
    • Встроенные функции
      • Обзор
      • Базовые
      • Агрегатные
      • Оконные
      • Для работы со списками
      • Для работы со словарями
      • Для работы со структурами
      • Для работы с типами
      • Для работы с JSON
      • Библиотеки C++
        • Обзор
        • Hyperscan
        • Pcre
        • Pire
        • Re2
        • String
        • Unicode
        • DateTime
        • Url
        • Ip
        • Yson
        • Digest
        • Math
        • Histogram
    • Туториал YQL
      • Обзор
      • Создание таблицы
      • Добавление данных в таблицу
      • Выборка данных из всех колонок
      • Выборка данных из определенных колонок
      • Сортировка и фильтрация
      • Агрегирование данных
      • Дополнительные условия выборки
      • Объединение таблиц с помощью JOIN
      • Вставка и модификация данных с помощью REPLACE
      • Вставка и модификация данных с помощью UPSERT
      • Вставка данных с помощью INSERT
      • Обновление данных с помощью UPDATE
      • Удаление данных
      • Добавление и удаление колонок
      • Удаление таблицы
  • Работа с YDB CLI
    • Обзор
    • Установка
    • Структура команд YDB CLI
    • Сервисные команды
    • Соединение с БД и аутентификация
    • Глобальные параметры
    • Работа со схемой БД
      • Список объектов
      • Информация об объекте
      • Директории
      • Вторичные индексы
      • Переименование таблиц
    • Работа с данными
      • Выполнение запроса к данным
      • План исполнения запроса
      • Потоковое чтение таблицы
      • Скан запросы
    • Загрузка и выгрузка данных
      • Обзор
      • Файловая структура выгрузки
      • Выгрузка в файловую систему
      • Загрузка из файловой системы
      • Соединение и аутентификация с S3
      • Выгрузка в S3
      • Загрузка из S3
      • Импорт данных из файла в существующую таблицу
    • Управление профилями
      • Обзор
      • Создание профиля
      • Использование профиля в запросах
      • Получение информации о профиле
      • Удаление профиля
      • Активированный профиль
    • Информационные сервисы
      • Список эндпоинтов
      • Проверка аутентификации
    • Нагрузочное тестирование
      • Обзор
      • Stock нагрузка
  • Работа с YDB SDK
    • Обзор
    • Установка
    • Аутентификация
    • Тестовое приложение
      • Обзор
      • C++
      • C# (.NET)
      • Go
      • Java
      • Node.js
      • PHP
      • Python
      • Архив
        • Go v1
        • Go v2
    • Обработка ошибок в API
    • Рецепты кода
      • Обзор
      • Аутентификация
        • Обзор
        • С помощью токена
        • Анонимная
        • Файл сервисного аккаунта
        • Сервис метаданных
        • С помощью переменных окружения
        • С помощью логина и пароля
      • Балансировка
        • Обзор
        • Равномерный случайный выбор
        • Предпочитать ближайший дата-центр
        • Предпочитать зону доступности
      • Выполнение повторных запросов
      • Диагностика проблем
        • Обзор
        • Включить логирование
        • Подключить метрики в Prometheus
        • Подключить трассировку в Jaeger
      • Установить размер пула сессий
      • Вставка данных
      • Пакетная вставка данных
  • Управление кластером
    • Обзор
    • Kubernetes
      • Обзор
      • Развертывание в Yandex Managed Service for Kubernetes
      • Развертывание в AWS Elastic Kubernetes Service
      • Эксплуатация
    • Вручную
      • Локальная установка
      • Конфигурация кластера
      • Обслуживание дисковой подсистемы кластера
        • Обзор
        • Способы предотвращения выхода за модель отказа
        • Балансировка нагрузки на диски
        • Способы освобождения места на физических устройствах
        • Расширение кластера
        • Добавление групп хранения
        • Безопасные рестарт и выключение узлов
        • Включение/выключение SelfHeal
        • Включение/выключение Scrubbing
        • Перевоз VDisk'ов
        • Изменение конфигураций через CMS
        • Изменение конфигурации акторсистемы
    • Встроенный UI
      • Обзор
      • YDB Monitoring
      • Hive web-viewer
      • Обзор соединений
      • Логи
      • Графики
    • Системные таблицы
  • Вопросы и ответы
    • Обзор
    • Общие вопросы
    • Ошибки
    • YQL
    • Serverless
    • Все вопросы на одной странице
  • Публичные материалы
  1. YQL
  2. Синтаксис
  3. PRAGMA

PRAGMA

Статья создана
Yandex.Cloud
  • Определение
    • Область действия
  • Глобальные
    • AutoCommit
    • TablePathPrefix
    • UseTablePrefixForEach
    • Warning
    • SimpleColumns
    • CoalesceJoinKeysOnQualifiedAll
    • StrictJoinKeyTypes
    • AnsiInForEmptyOrNullableItemsCollections
    • AnsiRankForNullableKeys
    • AnsiCurrentRow
    • AnsiOrderByLimitInUnionAll
    • OrderedColumns
    • PositionalUnionAll
    • RegexUseRe2
    • ClassicDivision
    • AllowDotInAlias
    • WarnUnnamedColumns
    • GroupByLimit
    • GroupByCubeLimit
  • Yson
    • yson.AutoConvert
    • yson.Strict
    • yson.DisableStrict

Определение

Переопределение настроек.

Синтаксис

PRAGMA x.y = "z"; или PRAGMA x.y("z", "z2", "z3");:

  • x — (опционально) категория настройки.
  • y — название настройки.
  • z — (опционально для флагов) значение настройки. Допустимо использование следующих суффиксов:
    • Kb, Mb, Gb — для объема информации.
    • sec, min, h, d — для временных значений.

Примеры

PRAGMA AutoCommit;
PRAGMA TablePathPrefix = "home/yql";
PRAGMA Warning("disable", "1101");

За некоторым исключением, значение настроек можно вернуть в состояние по умолчанию с помощью PRAGMA my_pragma = default;.

Полный список доступных настроек см. в таблице ниже.

Область действия

Если не указано иное, прагма влияет на все идущие следом выражения вплоть до конца модуля, в котором она встречается.
При необходимости и логической возможности допустимо менять значение настройки несколько раз в одном запросе, чтобы оно было разным на разных этапах выполнения.
Существуют также специальные scoped прагмы, область действия которых определяется по тем же правилам, что и область видимости именованных выражений.
В отличие от scoped прагм, обычные прагмы могут использоваться только в глобальной области видимости (не внутри лямбда-функций, ACTION и т.п.).

Глобальные

AutoCommit

Тип значения По умолчанию
Флаг false

Автоматически выполнять COMMIT после каждого выражения.

TablePathPrefix

Тип значения По умолчанию
Строка —

Добавить указанный префикс к путям таблиц внутри кластеров. Работает по принципу объединения путей в файловой системе: поддерживает ссылки на родительский каталог .. и не требует добавления слеша справа. Например,

PRAGMA TablePathPrefix = "home/yql"; SELECT * FROM test;

Префикс не добавляется, если имя таблицы указано как абсолютный путь (начинается с /).

UseTablePrefixForEach

Тип значения По умолчанию
Флаг false

EACH использует TablePathPrefix для каждого элемента списка.

Warning

Тип значения По умолчанию
1. Действие
2. Код предупреждения либо символ "*"
—

Действие:

  • disable — отключить;
  • error — приравнять к ошибке;
  • default — вернуть поведение по умолчанию.

Код предупреждения возвращается вместе с самим текстом (в веб-интерфейсе отображается справа).

Пример:
PRAGMA Warning("error", "*");
PRAGMA Warning("disable", "1101");
PRAGMA Warning("default", "4503");

В данном случае все предупреждения будут считаться ошибками, за исключением предупреждение с кодом 1101, которое будет отключено, и 4503, которое будет обрабатываться по умолчанию (то есть останется предупреждением). Поскольку предупреждения могут добавляться в новых релизах YQL, следует с осторожностью пользоваться конструкцией PRAGMA Warning("error", "*"); (как минимум покрывать такие запросы автотестами).

SimpleColumns

SimpleColumns / DisableSimpleColumns

Тип значения По умолчанию
Флаг true

При использовании SELECT foo.* FROM ... AS foo убрать префикс foo. у имен результирующих колонок.

Работает в том числе и для JOIN, но в этом случае имеет право упасть в случае конфликта имен (который можно разрешить с помощью WITHOUT и переименования колонок). Для JOIN в режиме SimpleColumns производится неявный Coalesce для ключевых колонок: запрос SELECT * FROM T1 AS a JOIN T2 AS b USING(key) в режиме SimpleColumns работает как SELECT a.key ?? b.key AS key, ... FROM T1 AS a JOIN T2 AS b USING(key)

CoalesceJoinKeysOnQualifiedAll

CoalesceJoinKeysOnQualifiedAll / DisableCoalesceJoinKeysOnQualifiedAll

Тип значения По умолчанию
Флаг true

Управляет неявным Coalesce для ключевых колонок JOIN в режиме SimpleColumns. Если флаг установлен, то Coalesce ключевых колонок происходит при наличии хотя бы одного выражения вида foo.* или * в SELECT - например SELECT a.* FROM T1 AS a JOIN T2 AS b USING(key). Если флаг сброшен, то Coalesce ключей JOIN происходит только при наличии '*' после SELECT

StrictJoinKeyTypes

StrictJoinKeyTypes / DisableStrictJoinKeyTypes

Тип значения По умолчанию
Флаг false

Если флаг установлен, то JOIN будет требовать строгого совпадения типов ключей.
По умолчанию JOIN предварительно конвертирует ключи к общему типу, что может быть нежелательно с точки зрения производительности.
StrictJoinKeyTypes является scoped настройкой.

AnsiInForEmptyOrNullableItemsCollections

Тип значения По умолчанию
Флаг false

Наличие этой прагмы приводит поведение оператора IN в соответствие со стандартом в случае наличия NULL в левой или правой части оператора IN. Также изменено поведение IN в случае, когда справа был Tuple с элементами разных типов. Примеры:

1 IN (2, 3, NULL) = NULL (было Just(False))
NULL IN () = Just(False) (было NULL)
(1, null) IN ((2, 2), (3, 3)) = Just(False) (было NULL)
2147483648u IN (1, 2147483648u) = True (было False)

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

AnsiRankForNullableKeys

Тип значения По умолчанию
Флаг false

Приводит поведение RANK/DENSE_RANK в соответствие со стандартом при наличии опциональных типов в ключах сортировки окна или в аргументе этих оконных функций. А именно:

  • типом результата всегда является Uint64, а не Uint64?;
  • null-ы в ключах считаются равными друг другу (текущая реализация возвращает NULL).
    Явным образом выбрать старое поведению можно указав прагму DisableAnsiRankForNullableKeys. Если никакой прагмы не задано, то выдается предупреждение и работает старый вариант.

AnsiCurrentRow

Тип значения По умолчанию
Флаг false

Приводит неявное задание рамки окна при наличии ORDER BY в соответствие со стандартом.
Если AnsiCurrentRow не установлен, то окно (ORDER BY key) эквивлентно (ORDER BY key ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW).
Стандарт же требует, чтобы такое окно вело себя как (ORDER BY key RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW).
Разница состоит в трактовке CURRENT ROW. В режиме ROWS CURRENT ROW трактуется буквально – текущая строка в партиции.
А в режиме RANGE конец рамки CURRENT ROW означает "последния строка в партиции с ключем сортировки равным текущей строке".

AnsiOrderByLimitInUnionAll

Тип значения По умолчанию
Флаг false

Приводит поведение UNION ALL в соответствие со стандартом при наличии ORDER BY/LIMIT/DISCARD/INSERT INTO в объединяемых подзапросах. А именно:

  • ORDER BY/LIMIT/INSERT INTO допускается только после последнего подзапроса;
  • DISCARD допускается только перед первым подзапросом;
  • указанные операторы действуют на результат UNION ALL (в отличии от текущего поведения, когда они действуют на подзапрос);
  • чтобы применить оператор к подзапросу, подзапрос необходимо взять в скобки.

Явным образом выбрать старое поведению можно указав прагму DisableAnsiOrderByLimitInUnionAll. Если никакой прагмы не задано, то выдается предупреждение и работает старый вариант.

OrderedColumns

OrderedColumns / DisableOrderedColumns

Выводить порядок колонок в SELECT/JOIN/UNION ALL и сохранять его при записи результатов. По умолчанию порядок колонок не определен.

PositionalUnionAll

Включить соответствующий стандарту поколоночный режим выполнения UNION ALL. При этом автоматически включается
упорядоченность колонок.

RegexUseRe2

Тип значения По умолчанию
Флаг false

Использовать Re2 UDF вместо Pcre для выполнения SQL операторов REGEX,MATCH,RLIKE. Re2 UDF поддерживает корректную обработку Unicode-символов в отличие от используемой по умолчанию Pcre UDF.

ClassicDivision

Тип значения По умолчанию
Флаг true

В классическом варианте результат целочисленного деления остаётся целочисленным (по умолчанию).
Если отключить — результат всегда становится Double.
ClassicDivision является scoped настройкой.

AllowDotInAlias

Тип значения По умолчанию
Флаг false

Разрешить использовать точку в именах результирующих колонок. По умолчанию отключено, т.к. дальнейшее использование таких колонок в JOIN полностью не реализовано.

WarnUnnamedColumns

Тип значения По умолчанию
Флаг false

Генерировать предупреждение если для безымянного выражения в SELECT было автоматически сгенерировано имя колонки (вида column[0-9]+).

GroupByLimit

Тип значения По умолчанию
Положительное число 32

Увеличение лимита на число группировок в GROUP BY.

GroupByCubeLimit

Тип значения По умолчанию
Положительное число 5

Увеличение лимита на число размерностей GROUP BY.

Использовать нужно аккуратно, так как вычислительная сложность запроса растет экспоненциально по отношению к числу размерностей.

Yson

Управление поведением Yson UDF по умолчанию, подробнее см. в документации по ней и в частности Yson::Options.

yson.AutoConvert

Тип значения По умолчанию
Флаг false

Автоматическое конвертация значений в требуемый тип данных во всех вызовах Yson UDF, в том числе и неявных.

yson.Strict

Тип значения По умолчанию
Флаг true

Управление строгим режимом во всех вызовах Yson UDF, в том числе и неявных. Без значения или при значении "true" - включает строгий режим. Со значением "false" - отключает.

yson.DisableStrict

Тип значения По умолчанию
Флаг false

Инвертированная версия yson.Strict. Без значения или при значении "true" - отключает строгий режим. Со значением "false" - включает.

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Определение
  • Область действия
  • Глобальные
  • AutoCommit
  • TablePathPrefix
  • UseTablePrefixForEach
  • Warning
  • SimpleColumns
  • CoalesceJoinKeysOnQualifiedAll
  • StrictJoinKeyTypes
  • AnsiInForEmptyOrNullableItemsCollections
  • AnsiRankForNullableKeys
  • AnsiCurrentRow
  • AnsiOrderByLimitInUnionAll
  • OrderedColumns
  • PositionalUnionAll
  • RegexUseRe2
  • ClassicDivision
  • AllowDotInAlias
  • WarnUnnamedColumns
  • GroupByLimit
  • GroupByCubeLimit
  • Yson
  • yson.AutoConvert
  • yson.Strict
  • yson.DisableStrict