Соответствие ANSI в Databricks Runtime
Область применения: Databricks Runtime
В этой статье описывается соответствие ANSI в Databricks Runtime. Для режима ANSI в Databricks SQL, см. ANSI_MODE.
SQL Spark поддерживает два варианта обеспечения соответствия стандарту ANSI — spark.sql.ansi.enabled
и spark.sql.storeAssignmentPolicy
.
Если для spark.sql.ansi.enabled
задано значение true
, Spark SQL использует диалект, соответствующий ANSI, вместо соответствия Hive. Например, при недопустимых входных данных оператора SQL или функции Spark вызывает исключение во время выполнения, а не возвращает результаты NULL. Некоторые возможности диалекта ANSI могут не соответствовать стандарту SQL ANSI, но их поведение соответствует стилю SQL ANSI.
Кроме того, Spark SQL имеет независимый параметр для управления неявным поведением приведения при хранении строк в таблице. Правила приведения типов определены как правила распределения хранилища в стандарте.
Если spark.sql.storeAssignmentPolicy
установлен в ANSI
, Spark SQL соответствует правилам назначения хранилища ANSI. Это отдельная конфигурация, так как ее значение по умолчанию — ANSI
, а конфигурация spark.sql.ansi.enabled
по умолчанию отключена.
В следующей таблице приведены сведения о поведении:
Имя свойства | По умолчанию. | Значение |
---|---|---|
spark.sql.ansi.enabled |
ложный | Если значение равно true, Spark пытается обеспечить соответствие спецификации SQL ANSI:
|
spark.sql.storeAssignmentPolicy |
ANSI | При сохранении значения в столбец с другим типом данных Spark выполняет преобразование типов. Существуют три политики для правил приведения типов: ANSI , legacy и strict .
|
В следующих подразделах представлены изменения в поведении арифметических операций, преобразований типов и синтаксического анализа SQL при включенном режиме ANSI. В Spark SQL существует три типа преобразования типов, и в этой статье каждый из них будет рассмотрен по отдельности: приведение, присвоение для хранения и принуждение к типу.
Арифметические операции
В SQL Spark арифметическая операции с числовыми типами (кроме decimal) по умолчанию не проверяются на переполнение.
Это означает, что если операция приводит к переполнению, результат будет таким же, как и соответствующая операция в программе Java или Scala (например, если сумма 2 целых чисел превышает максимальное значение, которое может быть представлено, результатом будет отрицательное число). С другой стороны, Spark SQL возвращает NULL при десятичных переполнениях.
Если spark.sql.ansi.enabled
установлено на true
и переполнение происходит при числовых и интервальных арифметических операциях, то в момент выполнения возникает арифметическое исключение.
-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
error: integer overflow
-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
-2147483648
Состав
Если spark.sql.ansi.enabled
задано значение true
, явное приведение с помощью синтаксиса CAST
создает исключение среды выполнения для незаконных шаблонов приведения, определенных в стандарте, таких как приведение из строки в целое число.
Предложение CAST
режима ANSI Spark следует правилам синтаксиса раздела 6.13 "Спецификация приведения" в стандарте ISO/МЭК 9075-2:2011 Информационные технологии — Языки баз данных - SQL. Часть 2: Foundation (SQL/Foundation), за исключением того, что оно специально позволяет выполнять следующие простые преобразования типов, которые запрещены в стандарте ANSI:
- NumericType <=> BooleanType
- ТипСтроки <=> ТипБинарный
Допустимые сочетания исходных и целевых типов данных в выражении CAST
приведены в следующей таблице.
"Да" означает, что сочетание является синтаксически допустимым без ограничений, а "Нет" означает, что сочетание недопустимо.
Исходный/целевой | Числовое | Строка | Дата | Метка времени | Интервал | Логический | Binary | Массив | Карта | Структура |
---|---|---|---|---|---|---|---|---|---|---|
Числовое | И | Y | N | N | N | Y | N | N | N | N |
Строка | Y | Y | Y | Y | Y | Y | Y | N | N | N |
Дата | N | Y | Y | У | N | N | N | N | N | N |
Метка времени | N | Ы | Y | Y | N | N | N | N | N | N |
Интервал | N | Y | N | N | Y | N | N | N | N | N |
Логический | Y | Y | N | N | N | Y | N | N | N | N |
Binary | У | N | N | N | N | N | Y | N | N | N |
Массив | N | N | N | N | N | N | N | Y | N | N |
Карта | N | N | N | N | N | N | N | N | Y | N |
Структура | N | N | N | N | N | N | N | N | N | Y |
-- Examples of explicit casting
-- `spark.sql.ansi.enabled=true`
> SELECT CAST('a' AS INT);
ERROR: [CAST_INVALID_INPUT] The value 'a' of the type "STRING" cannot be cast to "INT" because it is malformed.
> SELECT CAST(2147483648L AS INT);
ERROR: [CAST_OVERFLOW] The value 2147483648L of the type "BIGINT" cannot be cast to "INT" due to an overflow.
> SELECT CAST(DATE'2020-01-01' AS INT)
ERROR: [DATATYPE_MISMATCH.CAST_WITH_FUNC_SUGGESTION] Cannot resolve "CAST(DATE '2020-01-01' AS INT)" due to data type mismatch: cannot cast "DATE" to "INT".
-- `spark.sql.ansi.enabled=false` (This is a default behavior)
> SELECT cast('a' AS INT);
null
> SELECT CAST(2147483648L AS INT);
-2147483648
> SELECT CAST(DATE'2020-01-01' AS INT);
null
Назначение хранения
Настройка spark.sql.storeAssignmentPolicy
по умолчанию установлена на ANSI
. При использовании этого параметра, если типы данных исходных значений не соответствуют типам целевых столбцов, Spark SQL автоматически добавляет предложения ANSI CAST в инструкцию INSERT.
При вставке таблицы согласно этой политике Spark проверяет и отклоняет недопустимые преобразования типов, выдавая исключение для обеспечения качества данных. Это означает, что если попытка вставки завершается ошибкой из-за несоответствия типа, она не приведет к частичной записи данных в таблицу.
Примеры:
-- spark.sql.storeAssignmentPolicy=ANSI
> CREATE TABLE test(i INT);
> INSERT INTO test VALUES (2147483648L);
ERROR: [CAST_OVERFLOW_IN_TABLE_INSERT] Fail to insert a value of "BIGINT" type into the "INT" type column `i` due to an overflow.
> INSERT INTO test VALUES ('a');
ERROR: [CAST_INVALID_INPUT ERROR] The value 'a' of the type "STRING" cannot be cast to "INT" because it is malformed
В этих примерах показано, как Spark SQL предотвращает вставку несовместимых данных, тем самым сохраняя целостность данных.
Если для spark.sql.storeAssignmentPolicy
задано значение LEGACY
, Spark SQL возвращается к поведению, распространенному до Spark 2.x. В этом режиме вместо использования ANSI CAST применяется устаревшие операции CAST. В рамках этой политики недопустимые приведения во время вставки в таблицу приводят к вставке значений NULL или некорректных значений, а не к исключению.
Примеры:
-- spark.sql.storeAssignmentPolicy=LEGACY
> CREATE TABLE test(i INT);
> INSERT INTO test VALUES (2147483648L);
> INSERT INTO test VALUES ('a');
> SELECT * FROM test;
-- Results
-- -2147483648 (incorrect value due to overflow)
-- null (cannot cast 'a' to INT)
Приведение типов
Повышение и приоритет типов
Если spark.sql.ansi.enabled
установлено на true
, Spark SQL использует несколько правил, которые управляют разрешением конфликтов между типами данных.
В основе этого разрешения конфликтов является список приоритетов типов, определяющий, могут ли значения заданного типа данных быть повышены до другого типа данных неявно.
Тип данных | список приоритетов (от самого узкого до самого широкого) |
---|---|
Байт | Байт -> Шорт -> Инт -> Лонг -> Децимал -> Флоат* -> Дабл |
Короткий | Short -> Int -> Long -> Decimal-> Float* -> Double |
Int | Int -> Long -> Десятичное -> Float* -> Double |
Длинный | Длинный -> Десятичный -> Плавающий* -> Двойной |
Десятичное число | Decimal -> Float* -> Double |
Тип с плавающей запятой | Float -> Double |
Двойной | Двойной |
Дата | Дата -> Метка времени |
Метка времени | Метка времени |
Строка | Строка |
Бинарный | двоичный |
Логический | Логический |
Интервал | Интервал |
Карта | Карта** |
Массив | Array** |
Структура | Структура |
- Чтобы избежать потери точности, пропускается разрешение float для наименее общего типа.
** Для сложного типа правило приоритета применяется рекурсивно к элементам его компонентов.
К строковому типу (String) и нетипизированному значению NULL применяются особые правила. Значение NULL можно преобразовать в любой другой тип, а значение String можно преобразовать в любой скалярный тип данных.
Это графическое изображение списка приоритетов в виде направленного дерева:
Разрешение наименьшего общего типа
Наименее распространенный тип из набора типов — самый узкий тип, доступный из списка приоритетов всеми элементами набора типов.
Разрешение наименее распространённого типа используется в следующих целях:
- Чтобы решить, можно ли вызвать функцию, ожидающую параметр определенного типа, с помощью аргумента более узкого типа.
- Определите тип аргумента для функций, которые ожидают один и тот же тип аргумента для нескольких параметров, таких как coalesce, least или greatest.
- Чтобы вывести типы операндов для операторов, таких как арифметические операции или сравнения.
- Определите тип результата для выражений, таких как выражение CASE.
- Определить типы элементов, ключей или значений для конструкторов массивов и карт.
Если наименьший общий тип определяется как FLOAT, применяются специальные правила. При использовании значений с плавающей запятой, если любой из типов является INT, BIGINT или DECIMAL, наименее общий тип преобразуется в DOUBLE, чтобы избежать потенциальной потери цифр.
-- The coalesce function accepts any set of argument types as long as they share a least common type.
-- The result type is the least common type of the arguments.
> SET spark.sql.ansi.enabled=true;
> SELECT typeof(coalesce(1Y, 1L, NULL));
BIGINT
> SELECT typeof(coalesce(1, DATE'2020-01-01'));
Error: Incompatible types [INT, DATE]
> SELECT typeof(coalesce(ARRAY(1Y), ARRAY(1L)));
ARRAY<BIGINT>
> SELECT typeof(coalesce(1, 1F));
DOUBLE
> SELECT typeof(coalesce(1L, 1F));
DOUBLE
> SELECT (typeof(coalesce(1BD, 1F)));
DOUBLE
-- The substring function expects arguments of type INT for the start and length parameters.
> SELECT substring('hello', 1Y, 2);
he
> SELECT substring('hello', '1', 2);
he
> SELECT substring('hello', 1L, 2);
Error: Argument 2 requires an INT type.
> SELECT substring('hello', str, 2) FROM VALUES(CAST('1' AS STRING)) AS T(str);
Error: Argument 2 requires an INT type.
Функции SQL
Поведение некоторых функций SQL может отличаться в режиме ANSI (spark.sql.ansi.enabled=true
).
-
size
— эта функция возвращает значение NULL для входных данных со значением NULL в режиме ANSI. -
element_at
:- Эта функция выбрасывает исключение
ArrayIndexOutOfBoundsException
при использовании недопустимых индексов. - Эта функция выбрасывает
NoSuchElementException
, если ключ не существует в карте.
- Эта функция выбрасывает исключение
-
elt
— эта функция выбрасываетArrayIndexOutOfBoundsException
при использовании недопустимых индексов. -
make_date
— эта функция вызывает сбой с исключением, если дата результата недопустима. -
make_timestamp
— эта функция вызывает ошибку с исключением, если метка времени результата недопустима. -
make_interval
— если интервал результата недействителен, эта функция завершается сбоем с исключением. -
next_day
— эта функция создает исключениеIllegalArgumentException
, если входные данные не являются допустимым днем недели. -
parse_url
— эта функция выбрасывает исключениеIllegalArgumentException
, если строка ввода не является допустимым URL-адресом. -
to_date
— эта функция вызывает исключение, если не удается разобрать входную строку или строка шаблона недопустима. -
to_timestamp
— эта функция вызывает исключение, если не удается распознать входную строку или строка шаблона недопустима. -
to_unix_timestamp
— эта функция завершается сбоем с исключением, если не удается выполнить синтаксический анализ входной строки или строка шаблона недопустима. -
unix_timestamp
— эта функция завершится ошибкой с исключением, если входная строка не может быть проанализирована или строка шаблона неверна.
Операторы SQL
Поведение некоторых операторов SQL может отличаться в режиме ANSI (spark.sql.ansi.enabled=true
).
-
array_col[index]
— этот оператор выбрасывает исключениеArrayIndexOutOfBoundsException
при использовании недопустимых индексов. -
map_col[key]
— этот оператор вызывает исключениеNoSuchElementException
, если ключ не существует в карте. -
CAST(string_col AS TIMESTAMP)
— этот оператор вызывает исключение, если входную строку не получается проанализировать. -
CAST(string_col AS DATE)
— этот оператор вызывает исключение, если входную строку не получается распарсить.
Полезные функции для режима ANSI
Если режим ANSI включен, он создает исключения при недопустимых операциях. Для подавления этих исключений можно использовать перечисленные ниже функции SQL.
-
try_cast
— идентичнаCAST
, за исключением того, что она возвращает результатNULL
, а не создает исключение при возникновении ошибки времени выполнения. -
try_add
идентичен оператору сложения+
, за исключением того, что он возвращает результатNULL
, а не создает исключение в случае переполнения целочисленного значения. -
try_divide
идентичен оператору деления/
, за исключением того, что он возвращает результатNULL
, а не создает исключение в случае деления на 0.
Ключевые слова SQL
Если spark.sql.ansi.enabled
имеет значение true, SQL Spark будет использовать средство синтаксического анализа режима ANSI.
В этом режиме SQL Spark имеет два вида ключевых слов:
- Зарезервированные ключевые слова: ключевые слова, зарезервированные и не могут использоваться в качестве идентификаторов для таблицы, представления, столбца, функции, псевдонима и т. д.
- Незарезервированные ключевые слова — ключевые слова, которые имеют специальное значение только в определенных контекстах и могут использоваться в качестве идентификаторов в других контекстах. Например,
EXPLAIN SELECT ...
является командой, но EXPLAIN можно использовать в качестве идентификаторов в других местах.
Если режим ANSI отключен, SQL Spark имеет два вида ключевых слов:
- Незарезервированные ключевые слова — то же определение, что и в режиме ANSI.
- Ключевые слова, не являющиеся зарезервированными, — строгая версия не зарезервированных ключевых слов, которая не может использоваться в качестве псевдонима таблицы.
Значение spark.sql.ansi.enabled
по умолчанию — false.
Ниже приведен список всех ключевых слов в Spark SQL.
Ключевое слово | Режим ANSI для Spark SQL | Режим SQL Spark по умолчанию | SQL-2016 |
---|---|---|---|
ДОБАВИТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
ПОСЛЕ | не зарезервировано | не зарезервировано | не зарезервировано |
ВСЕ | сдержанный | не зарезервировано | сдержанный |
ИЗМЕНИТЬ | не зарезервировано | не зарезервировано | сдержанный |
ВСЕГДА | не зарезервировано | не зарезервировано | не зарезервировано |
Анализ | не зарезервировано | не зарезервировано | не зарезервировано |
И | сдержанный | не зарезервировано | сдержанный |
АНТИ | не зарезервировано | строго не зарезервировано | не зарезервировано |
ЛЮБАЯ | сдержанный | не зарезервировано | сдержанный |
АРХИВ | не зарезервировано | не зарезервировано | не зарезервировано |
ARRAY | не зарезервировано | не зарезервировано | сдержанный |
AS | сдержанный | не зарезервировано | сдержанный |
ASC | не зарезервировано | не зарезервировано | не зарезервировано |
AT | не зарезервировано | не зарезервировано | сдержанный |
АВТОРИЗАЦИЯ | сдержанный | не зарезервировано | резервированный |
между | не зарезервировано | не зарезервировано | сдержанный |
ОБА | сдержанный | не зарезервировано | сдержанный |
ведро | не зарезервировано | не зарезервировано | не зарезервировано |
ВЕДРА | не зарезервировано | не зарезервировано | не зарезервировано |
BY | не зарезервировано | не зарезервировано | сдержанный |
CACHE | не зарезервировано | не зарезервировано | не зарезервировано |
КАСКАД | не зарезервировано | не зарезервировано | не зарезервировано |
Случай | зарезервированный | не зарезервировано | сдержанный |
CAST | зарезервированный | не зарезервировано | сдержанный |
ИЗМЕНЕНИЕ | не зарезервировано | не зарезервировано | не зарезервировано |
ПРОВЕРКА | сдержанный | не зарезервировано | зарезервированный |
ОЧИСТИТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
кластер | не зарезервировано | не зарезервировано | не зарезервировано |
сгруппированный | не зарезервировано | не зарезервировано | не зарезервировано |
CODEGEN | не зарезервировано | не зарезервировано | не зарезервировано |
COLLATE | сдержанный | не зарезервировано | сдержанный |
КОЛЛЕКЦИЯ | не зарезервировано | не зарезервировано | не зарезервировано |
COLUMN | сдержанный | не зарезервировано | зарезервированный |
COLUMNS | не зарезервировано | не зарезервировано | не зарезервировано |
КОММЕНТАРИЙ | не зарезервировано | не зарезервировано | не зарезервировано |
коммит | не зарезервировано | не зарезервировано | сдержанный |
COMPACT | не зарезервировано | не зарезервировано | не зарезервировано |
Уплотнения | не зарезервировано | не зарезервировано | не зарезервировано |
ВЫЧИСЛЕНИЕ | не зарезервировано | не зарезервировано | не зарезервировано |
CONCATENATE | не зарезервировано | не зарезервировано | не зарезервировано |
CONSTRAINT | зарезервированный | не зарезервировано | сдержанный |
Стоимость | не зарезервировано | не зарезервировано | не зарезервировано |
создать | сдержанный | не зарезервировано | сдержанный |
крест | сдержанный | строго-незарезервировано | сдержанный |
CUBE | не зарезервировано | не зарезервировано | зарезервированный |
ТЕКУЩИЙ | не зарезервировано | не зарезервировано | сдержанный |
CURRENT_DATE | сдержанный | не зарезервировано | сдержанный |
Текущее время | сдержанный | не зарезервировано | сдержанный |
CURRENT_TIMESTAMP | сдержанный | не зарезервировано | сдержанный |
ТЕКУЩИЙ_ПОЛЬЗОВАТЕЛЬ | сдержанный | не зарезервировано | сдержанный |
ДАННЫЕ | не зарезервировано | не зарезервировано | не зарезервировано |
База данных | не зарезервировано | не зарезервировано | не зарезервировано |
БАЗЫ ДАННЫХ | не зарезервировано | не зарезервировано | не зарезервировано |
ДЕНЬ | не зарезервировано | не зарезервировано | не зарезервировано |
DBPROPERTIES | не зарезервировано | не зарезервировано | не зарезервировано |
ОПРЕДЕЛЕНО | не зарезервировано | не зарезервировано | не зарезервировано |
Удалить | не зарезервировано | не зарезервировано | зарезервированный |
ОГРАНИЧЕННЫЙ | не зарезервировано | не зарезервировано | не зарезервировано |
DESC | не зарезервировано | не зарезервировано | не зарезервировано |
ОПИСАТЬ | не зарезервировано | не зарезервировано | сдержанный |
DFS | не зарезервировано | не зарезервировано | не зарезервировано |
Каталоги | не зарезервировано | не зарезервировано | не зарезервировано |
КАТАЛОГ | не зарезервировано | не зарезервировано | не зарезервировано |
Отличительный | сдержанный | не зарезервировано | сдержанный |
РАСПРЕДЕЛИТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
DIV | не зарезервировано | не зарезервировано | не является ключевым словом |
БРОСИТЬ | не зарезервировано | не зарезервировано | сдержанный |
ИНАЧЕ | сдержанный | не зарезервировано | сдержанный |
КОНЕЦ | сдержанный | не зарезервировано | зарезервированный |
Эскейп | сдержанный | не зарезервировано | сдержанный |
СБЕЖАЛ | не зарезервировано | не зарезервировано | не зарезервировано |
КРОМЕ | сдержанный | строго-незарезервированный | сдержанный |
ОБМЕН | не зарезервировано | не зарезервировано | не зарезервировано |
СУЩЕСТВУЕТ | не зарезервировано | не зарезервировано | сдержанный |
EXPLAIN | не зарезервировано | не зарезервировано | не зарезервировано |
ЭКСПОРТ | не зарезервировано | не зарезервировано | не зарезервировано |
Расширенный | не зарезервировано | не зарезервировано | не зарезервировано |
ВНЕШНИЙ | не зарезервировано | не зарезервировано | сдержанный |
EXTRACT | не зарезервировано | не зарезервировано | сдержанный |
ЛОЖЬ | сдержанный | не зарезервировано | сдержанный |
FETCH | сдержанный | не зарезервировано | сдержанный |
ПОЛЯ | не зарезервировано | не зарезервировано | не зарезервировано |
ФИЛЬТР | сдержанный | не зарезервировано | сдержанный |
Формат файла | не зарезервировано | не зарезервировано | не зарезервировано |
первый | не зарезервировано | не зарезервировано | не зарезервировано |
FN | не зарезервировано | не зарезервировано | не зарезервировано |
СЛЕДУЮЩЕЕ | не зарезервировано | не зарезервировано | не зарезервировано |
ДЛЯ | сдержанный | не зарезервировано | сдержанный |
ИНОСТРАННЫЙ | сдержанный | не зарезервировано | сдержанный |
Формат | не зарезервировано | не зарезервировано | не зарезервировано |
ОТФОРМАТИРОВАНО | не зарезервировано | не зарезервировано | не зарезервировано |
ОТ | сдержанный | не зарезервировано | сдержанный |
ПОЛНЫЙ | сдержанный | строго не зарезервировано | сдержанный |
Функция | не зарезервировано | не зарезервировано | сдержанный |
ФУНКЦИИ | не зарезервировано | не зарезервировано | не зарезервировано |
СГЕНЕРИРОВАНО | не зарезервировано | не зарезервировано | не зарезервировано |
Глобальный | не зарезервировано | не зарезервировано | скрытный |
GRANT | сдержанный | не зарезервировано | сдержанный |
гранты | не зарезервировано | не зарезервировано | не зарезервировано |
ГРУППА | сдержанный | не зарезервировано | сдержанный |
ГРУППИРОВАНИЕ | не зарезервировано | не зарезервировано | сдержанный |
HAVING | сдержанный | не зарезервировано | сдержанный |
ЧАС | не зарезервировано | не зарезервировано | не зарезервировано |
ЕСЛИ | не зарезервировано | не зарезервировано | не является ключевым словом |
IGNORE | не зарезервировано | не зарезервировано | не зарезервировано |
ИМПОРТ | не зарезервировано | не зарезервировано | не зарезервировано |
В | сдержанный | не зарезервировано | сдержанный |
ИНДЕКС | не зарезервировано | не зарезервировано | не зарезервировано |
Индексы | не зарезервировано | не зарезервировано | не зарезервировано |
внутренний | сдержанный | строго не зарезервировано | сдержанный |
INPATH | не зарезервировано | не зарезервировано | не зарезервировано |
INPUTFORMAT | не зарезервировано | не зарезервировано | не зарезервировано |
INSERT | не зарезервировано | не зарезервировано | сдержанный |
Пересечение | сдержанный | строго не зарезервировано | сдержанный |
ИНТЕРВАЛ | не зарезервировано | не зарезервировано | сдержанный |
INTO | сдержанный | не зарезервировано | сдержанный |
IS | сдержанный | не зарезервировано | сдержанный |
ПРЕДМЕТЫ | не зарезервировано | не зарезервировано | не зарезервировано |
JOIN | сдержанный | нестрогое, не резервируемое | сдержанный |
JSON (формат обмена данными) | не зарезервировано | не зарезервировано | не зарезервировано |
Ключ | не зарезервировано | не зарезервировано | не зарезервировано |
Клавиши | не зарезервировано | не зарезервировано | не зарезервировано |
последний | не зарезервировано | не зарезервировано | не зарезервировано |
боковой | сдержанный | строгое-незарезервированное | сдержанный / зарезервированный |
ленивый | не зарезервировано | не зарезервировано | не зарезервировано |
ведущий | сдержанный | не зарезервировано | зарезервировано |
левый | сдержанный | строго-незарезервированный | сдержанный |
Нравится | не зарезервировано | не зарезервировано | зарезервированный / скрытный |
ILIKE | не зарезервировано | не зарезервировано | не зарезервировано |
LIMIT | не зарезервировано | не зарезервировано | не зарезервировано |
ЛИНИИ | не зарезервировано | не зарезервировано | не зарезервировано |
LIST | не зарезервировано | не зарезервировано | не зарезервировано |
LOAD | не зарезервировано | не зарезервировано | не зарезервировано |
ЛОКАЛЬНО | не зарезервировано | не зарезервировано | сдержанный |
LOCATION | не зарезервировано | не зарезервировано | не зарезервировано |
замок | не зарезервировано | не зарезервировано | не зарезервировано |
БЛОКИРОВКИ | не зарезервировано | не зарезервировано | не зарезервировано |
ЛОГИЧЕСКИЙ | не зарезервировано | не зарезервировано | не зарезервировано |
МАКРО | не зарезервировано | не зарезервировано | не зарезервировано |
Карта | не зарезервировано | не зарезервировано | не зарезервировано |
СОВПАДАЕТ | не зарезервировано | не зарезервировано | не зарезервировано |
ОБЪЕДИНИТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
МИНУТА | не зарезервировано | не зарезервировано | не зарезервировано |
MINUS | не зарезервировано | строго незарезервированный | не зарезервировано |
МЕСЯЦ | не зарезервировано | не зарезервировано | не зарезервировано |
MSCK; | не зарезервировано | не зарезервировано | не зарезервировано |
ПРОСТРАНСТВО ИМЕН | не зарезервировано | не зарезервировано | не зарезервировано |
ПРОСТРАНСТВА ИМЕН | не зарезервировано | не зарезервировано | не зарезервировано |
НАТУРАЛЬНЫЙ | сдержанный | строгий нерезервируемый | сдержанный |
Нет | не зарезервировано | не зарезервировано | сдержанный |
Логическое НЕ | сдержанный | не зарезервировано | зарезервированный |
NULL | сдержанный | не зарезервировано | сдержанный |
пустые значения | не зарезервировано | не зарезервировано | не зарезервировано |
OF | не зарезервировано | не зарезервировано | сдержанный |
ВКЛ. | сдержанный | строго без зарезервированности | сдержанный |
ТОЛЬКО | резервированный | не зарезервировано | сдержанный / зарезервированный |
ОПЦИЯ | не зарезервировано | не зарезервировано | не зарезервировано |
ПАРАМЕТРЫ | не зарезервировано | не зарезервировано | не зарезервировано |
ИЛИ | сдержанный | не зарезервировано | сдержанный |
ЗАКАЗ | сдержанный | не зарезервировано | сдержанный |
ВЫКЛ | не зарезервировано | не зарезервировано | сдержанный |
внешний | сдержанный | не зарезервировано | сдержанный |
ФОРМАТВЫВОДА | не зарезервировано | не зарезервировано | не зарезервировано |
Завершение | не зарезервировано | не зарезервировано | не зарезервировано |
Перекрытия | сдержанный | не зарезервировано | зарезервированный |
наложение | не зарезервировано | не зарезервировано | не зарезервировано |
перезаписать | не зарезервировано | не зарезервировано | не зарезервировано |
PARTITION | не зарезервировано | не зарезервировано | сдержанный |
РАЗДЕЛЕННЫЙ | не зарезервировано | не зарезервировано | не зарезервировано |
РАЗДЕЛЫ | не зарезервировано | не зарезервировано | не зарезервировано |
ПРОЦЕНТ | не зарезервировано | не зарезервировано | не зарезервировано |
PIVOT | не зарезервировано | не зарезервировано | не зарезервировано |
РАЗМЕЩЕНИЕ | не зарезервировано | не зарезервировано | не зарезервировано |
ПОЗИЦИЯ | не зарезервировано | не зарезервировано | сдержанный |
ПРЕДШЕСТВУЮЩИЙ | не зарезервировано | не зарезервировано | не зарезервировано |
ОСНОВНОЙ | сдержанный | не зарезервировано | сдержанный |
PRINCIPALS | не зарезервировано | не зарезервировано | не зарезервировано |
СВОЙСТВА | не зарезервировано | не зарезервировано | не зарезервировано |
ЧИСТКА | не зарезервировано | не зарезервировано | не зарезервировано |
QUALIFY | сдержанный | не зарезервировано | скрытный |
запрос | не зарезервировано | не зарезервировано | не зарезервировано |
диапазон | не зарезервировано | не зарезервировано | сдержанный |
ПОЛУЧАТЕЛЬ | не зарезервировано | не зарезервировано | не зарезервировано |
RECIPIENTS | не зарезервировано | не зарезервировано | не зарезервировано |
RECORDREADER | не зарезервировано | не зарезервировано | не зарезервировано |
Записыватель | не зарезервировано | не зарезервировано | не зарезервировано |
Восстановить | не зарезервировано | не зарезервировано | не зарезервировано |
уменьшить | не зарезервировано | не зарезервировано | не зарезервировано |
ССЫЛКИ | сдержанный | не зарезервировано | сдержанный |
REFRESH | не зарезервировано | не зарезервировано | не зарезервировано |
REGEXP | не зарезервировано | не зарезервировано | не является ключевым словом |
REMOVE | не зарезервировано | не зарезервировано | не зарезервировано |
ПЕРЕИМЕНОВАТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
РЕМОНТ | не зарезервировано | не зарезервировано | не зарезервировано |
ЗАМЕНИТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
RESET | не зарезервировано | не зарезервировано | не зарезервировано |
УВАЖЕНИЕ | не зарезервировано | не зарезервировано | не зарезервировано |
ОГРАНИЧИТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
REVOKE | не зарезервировано | не зарезервировано | сдержанный |
RIGHT | сдержанный | строгое отсутствие резервирования | сдержанный |
RLIKE | не зарезервировано | не зарезервировано | не зарезервировано |
РОЛЬ | не зарезервировано | не зарезервировано | не зарезервировано |
РОЛИ | не зарезервировано | не зарезервировано | не зарезервировано |
Откат | не зарезервировано | не зарезервировано | сдержанный |
свёртка | не зарезервировано | не зарезервировано | сдержанный |
ROW | не зарезервировано | не зарезервировано | сдержанный |
СТРОКИ | не зарезервировано | не зарезервировано | сдержанный |
SCHEMA | не зарезервировано | не зарезервировано | не зарезервировано |
СХЕМЫ | не зарезервировано | не зарезервировано | не является ключевым словом |
ВТОРОЙ | не зарезервировано | не зарезервировано | не зарезервировано |
SELECT | сдержанный | не зарезервировано | сдержанный |
SEMI | не зарезервировано | строго-незарезервированный | не зарезервировано |
РАЗДЕЛЕННЫЙ | не зарезервировано | не зарезервировано | не зарезервировано |
SERDE | не зарезервировано | не зарезервировано | не зарезервировано |
SERDEPROPERTIES | не зарезервировано | не зарезервировано | не зарезервировано |
SESSION_USER | сдержанный | не зарезервировано | сдержанный |
SET | не зарезервировано | не зарезервировано | сдержанный |
множества | не зарезервировано | не зарезервировано | не зарезервировано |
ПОДЕЛИТЬСЯ | не зарезервировано | не зарезервировано | не зарезервировано |
SHARES | не зарезервировано | не зарезервировано | не зарезервировано |
Шоу | не зарезервировано | не зарезервировано | не зарезервировано |
SKEWED | не зарезервировано | не зарезервировано | не зарезервировано |
НЕКОТОРЫЕ | сдержанный | не зарезервировано | сдержанный |
СОРТИРОВКА | не зарезервировано | не зарезервировано | не зарезервировано |
отсортировано | не зарезервировано | не зарезервировано | не зарезервировано |
НАЧАЛО | не зарезервировано | не зарезервировано | сдержанный |
СТАТИСТИКА | не зарезервировано | не зарезервировано | не зарезервировано |
СОХРАНЕНО | не зарезервировано | не зарезервировано | не зарезервировано |
стратифицировать | не зарезервировано | не зарезервировано | не зарезервировано |
СТРУКТУРА | не зарезервировано | не зарезервировано | не зарезервировано |
SUBSTR | не зарезервировано | не зарезервировано | не зарезервировано |
подстрока | не зарезервировано | не зарезервировано | не зарезервировано |
SYNC | не зарезервировано | не зарезервировано | не зарезервировано |
TABLE | сдержанный | не зарезервировано | сдержанный |
TABLES | не зарезервировано | не зарезервировано | не зарезервировано |
TABLESAMPLE | не зарезервировано | не зарезервировано | сдержанный |
TBLPROPERTIES | не зарезервировано | не зарезервировано | не зарезервировано |
TEMP | не зарезервировано | не зарезервировано | не является ключевым словом |
Временный | не зарезервировано | не зарезервировано | не зарезервировано |
ПРЕКРАЩЕНО | не зарезервировано | не зарезервировано | не зарезервировано |
ЗАТЕМ | сдержанный | не зарезервировано | сдержанный |
ВРЕМЯ | зарезервированный | не зарезервировано | сдержанный |
TO | сдержанный | не зарезервировано | сдержанный |
Касание | не зарезервировано | не зарезервировано | не зарезервировано |
TRAILING | сдержанный | не зарезервировано | зарезервированный |
ТРАНЗАКЦИЯ | не зарезервировано | не зарезервировано | не зарезервировано |
ТРАНЗАКЦИИ | не зарезервировано | не зарезервировано | не зарезервировано |
ПРЕОБРАЗОВАНИЕ | не зарезервировано | не зарезервировано | не зарезервировано |
TRIM | не зарезервировано | не зарезервировано | не зарезервировано |
ИСТИНА | не зарезервировано | не зарезервировано | сдержанный |
TRUNCATE | не зарезервировано | не зарезервировано | зарезервировано |
TRY_CAST | не зарезервировано | не зарезервировано | не зарезервировано |
ТИП | не зарезервировано | не зарезервировано | не зарезервировано |
Разархивировать | не зарезервировано | не зарезервировано | не зарезервировано |
Безграничный | не зарезервировано | не зарезервировано | не зарезервировано |
UNCACHE | не зарезервировано | не зарезервировано | не зарезервировано |
союз | сдержанный | строго не зарезервировано | сдержанный |
UNIQUE | сдержанный | не зарезервировано | сдержанный |
НЕИЗВЕСТНО | сдержанный | не зарезервировано | сдержанный |
РАЗБЛОКИРОВАТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
UNSET | не зарезервировано | не зарезервировано | не зарезервировано |
UPDATE | не зарезервировано | не зарезервировано | сдержанный |
ИСПОЛЬЗОВАНИЕ | не зарезервировано | не зарезервировано | не зарезервировано |
Пользователь | сдержанный | не зарезервировано | сдержанный |
Использование | сдержанный | строгий-незарезервированный | сдержанный |
VALUES | не зарезервировано | не зарезервировано | сдержанный |
ВИД | не зарезервировано | не зарезервировано | не зарезервировано |
VIEWS | не зарезервировано | не зарезервировано | не зарезервировано |
Когда | сдержанный | не зарезервировано | сдержанный |
WHERE | сдержанный | не зарезервировано | сдержанный |
WINDOW | не зарезервировано | не зарезервировано | сдержанный |
ВМЕСТЕ С | сдержанный | не зарезервировано | сдержанный |
ГОД | не зарезервировано | не зарезервировано | не зарезервировано |
ЗОНА | не зарезервировано | не зарезервировано | не зарезервировано |