Dodržování předpisů ANSI v Databricks Runtime
Platí pro: Databricks Runtime
Tento článek popisuje dodržování předpisů ANSI v Databricks Runtime. Režim ANSI v Databricks SQL najdete v tématu ANSI_MODE.
Spark SQL má dvě možnosti, jak podporovat dodržování předpisů se standardem ANSI SQL: spark.sql.ansi.enabled
a spark.sql.storeAssignmentPolicy
.
Pokud spark.sql.ansi.enabled
je nastavená hodnota true
, Spark SQL místo toho, aby byl kompatibilní s Hivem, používá dialekt kompatibilní se standardem ANSI. Spark například vyvolá výjimku za běhu místo vrácení výsledků s hodnotou null, pokud jsou vstupy operátoru NEBO funkce SQL neplatné. Některé funkce dialektu ANSI nemusí být přímo ze standardu ANSI SQL, ale jejich chování odpovídá stylu ANSI SQL.
Spark SQL má navíc nezávislou možnost řídit implicitní chování přetypování při ukládání řádků do tabulky. Chování přetypování je definováno jako pravidla přiřazení úložiště ve standardu.
Pokud spark.sql.storeAssignmentPolicy
je nastavená hodnota ANSI
, Spark SQL splňuje pravidla přiřazení úložiště ANSI. Jedná se o samostatnou konfiguraci, protože její výchozí hodnota je ANSI
, zatímco konfigurace spark.sql.ansi.enabled
je ve výchozím nastavení zakázaná.
Následující tabulka shrnuje chování:
Název vlastnosti | Výchozí | Význam |
---|---|---|
spark.sql.ansi.enabled |
false (nepravda) | Pokud je hodnota true, Spark se pokusí splnit specifikaci ANSI SQL: – Vyvolá výjimku za běhu, pokud dojde k přetečení v jakékoli operaci s celočíselnou nebo desetinnou čárkou. - Zakáže použití vyhrazených klíčových slov ANSI SQL jako identifikátorů v analyzátoru SQL. |
spark.sql.storeAssignmentPolicy |
ANSI | Při ukládání hodnoty do sloupce s jiným datovým typem Provede Spark převod typu. Existují tři zásady pro pravidla převodu typů: ANSI , legacy a strict .- ANSI : Spark provede převod typu podle ANSI SQL. V praxi je chování většinou stejné jako PostgreSQL. Nepovoluje určité nerozumné převody typu, jako je převod řetězce na hodnotu int nebo double na logickou hodnotu.- legacy : Spark umožňuje převod typu tak dlouho, dokud se jedná o platné přetypování, což je velmi volné. Například převod řetězce na hodnotu int nebo double na logickou hodnotu je povolený. Je to také jediné chování Ve Sparku 2.x a je kompatibilní s Hivem.- strict : Spark neumožňuje jakoukoli možnou ztrátu přesnosti nebo zkrácení dat v převodu typu, například převod double na int nebo decimal na double není povolený. |
Následující pododdíly představují změny chování v aritmetických operacích, převodech typů a parsování SQL při povolení režimu ANSI. Pro převody typů ve Spark SQL existují tři druhy a tento článek je představí jeden po druhém: přetypování, uložení přiřazení a převod typu.
Aritmetické operace
Ve Spark SQL nejsou aritmetické operace prováděné u číselných typů (s výjimkou desetinných míst) ve výchozím nastavení kontrolovány pro přetečení.
To znamená, že v případě, že operace způsobí přetečení, je výsledek stejný s odpovídající operací v programu Java nebo Scala (například pokud je součet 2 celých čísel vyšší než maximální hodnota reprezentovatelná, výsledek je záporné číslo). Na druhou stranu Spark SQL vrátí hodnotu null pro přetečení desetinných míst.
Pokud spark.sql.ansi.enabled
je nastavená true
hodnota a přetečení probíhá v numerických a intervalových aritmetických operacích, vyvolá za běhu aritmetickou výjimku.
-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
error: integer overflow
-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
-2147483648
Změna typu
Pokud spark.sql.ansi.enabled
je nastavena na true
, explicitní přetypování syntaxe CAST
vyvolá výjimku modulu runtime pro neplatné vzorce přetypování definované ve standardu, například přetypování z řetězce na celé číslo.
Klauzule CAST
režimu Spark ANSI se řídí pravidly syntaxe oddílu 6.13 "specifikace přetypování" ve standardu ISO/IEC 9075-2:2011 Informační technologie – databázové jazyky – SQL – část 2: Foundation (SQL/Foundation) s výjimkou speciálních jednoduchých převodů typů, které jsou zakázány podle standardu ANSI:
- NumericType <=> BooleanType
- StringType => BinaryType <
Platné kombinace zdrojového a cílového datového typu ve výrazu CAST
jsou uvedeny v následující tabulce.
"Y" označuje, že kombinace je syntakticky platná bez omezení a "N" označuje, že kombinace není platná.
SourceTarget | Číslo | Řetězcové | Datum | Časové razítko | Interval | Logická hodnota | Binární | Pole | Mapovat | Struktura |
---|---|---|---|---|---|---|---|---|---|---|
Číslo | Y | Y | N | N | N | Y | N | N | N | N |
String | Y | Y | Y | Y | Y | Y | Y | N | N | N |
Datum | N | Y | Y | Y | N | N | N | N | N | N |
Časové razítko | N | Y | Y | Y | N | N | N | N | N | N |
Interval | N | Y | N | N | Y | N | N | N | N | N |
Logická hodnota | Y | Y | N | N | N | Y | N | N | N | N |
Binární | Y | N | N | N | N | N | Y | N | N | N |
Pole | N | N | N | N | N | N | N | Y | N | N |
Mapovat | N | N | N | N | N | N | N | N | Y | N |
Struktura | 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
Uložení přiřazení
Výchozí nastavení spark.sql.storeAssignmentPolicy
ANSI
je . Pokud se při tomto nastavení datové typy zdrojových hodnot neshodují s cílovými typy sloupců, Spark SQL automaticky přidá klauzule ANSI CAST do příkazu INSERT.
Během vkládání tabulek v rámci této zásady Spark vyhledá a odmítne neplatné přetypování a vyvolá výjimku, která zajistí kvalitu dat. To znamená, že pokud pokus o vložení selže kvůli neshodě typu, nebude mít za následek, že se do tabulky částečně zapisují žádná data.
Příklady:
-- 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
Tyto příklady ukazují Spark SQL, který brání vložení nekompatibilních dat, a tím zachovává integritu dat.
Pokud je nastavená hodnota spark.sql.storeAssignmentPolicy
LEGACY
, Spark SQL se vrátí k chování, které přebíná až do Sparku 2.x. V tomto režimu místo použití přetypování ANSI použije starší operace CAST. V rámci této zásady neplatné přetypování během vkládání tabulky způsobí vložení hodnot NULL nebo nesprávných hodnot místo vyvolání výjimky.
Příklady:
-- 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)
Převod typu
Povýšení a priorita typu
Pokud spark.sql.ansi.enabled
je nastavená hodnota true
, Spark SQL používá několik pravidel, která řídí způsob řešení konfliktů mezi datovými typy.
Jádrem tohoto řešení konfliktů je seznam priorit typů, který definuje, jestli lze hodnoty daného datového typu implicitně upřednostnět na jiný datový typ.
Datový typ | priority list(od nejužšího po nejširší) |
---|---|
Byte | Bajt - Krátký ->> Int -> Dlouhý -> Desetinné číslo -> Float* -> Double |
Krátké | Short - Int ->> Long -> Decimal-> Float* -> Double |
Int | Int - Long ->> Decimal -> Float* -> Double |
Dlouhé celé číslo | Long - Decimal ->> Float* -> Double |
Desetinné číslo | Desetinné číslo -> Float* -> Double |
Float | Plovák –> double |
Hodnota s dvojitou přesností | Hodnota s dvojitou přesností |
Datum | Datum –> časové razítko |
Časové razítko | Časové razítko |
String | Řetězcové |
Binární | Binární |
Logické | Logické |
Interval | Interval |
Mapovat | Mapa** |
Pole | Pole** |
Struktura | Struct** |
- Pro nejméně běžné rozlišení typu float se přeskočí, aby nedošlo ke ztrátě přesnosti.
** U komplexního typu se pravidlo priority rekurzivně vztahuje na její prvky komponent.
Speciální pravidla platí pro typ string a netypovou hodnotu NULL. Hodnotu NULL lze zvýšit na jakýkoli jiný typ, zatímco řetězec lze zvýšit na jakýkoli jednoduchý datový typ.
Toto je grafické znázornění seznamu priorit jako směrovaný strom:
Nejméně běžné řešení typů
Nejmenší společný typ ze sady typů je nejužší typ dostupný ze seznamu priorit všemi prvky sady typů.
Nejméně běžné rozlišení typu se používá k:
- Rozhodněte se, jestli je možné vyvolat funkci, která očekává parametr typu, pomocí argumentu užšího typu.
- Odvozujte typ argumentu pro funkce, které očekávají typ sdíleného argumentu pro více parametrů, například shod, nejméně nebo největší.
- Odvozujte typy operandů pro operátory, jako jsou aritmetické operace nebo porovnání.
- Odvozujte typ výsledku pro výrazy, jako je výraz velká a malá písmena.
- Odvození elementu, klíče nebo hodnotových typů pro maticové a mapové konstruktory
Pokud se nejméně běžný typ přeloží na FLOAT, použijí se speciální pravidla. Pokud je některý z typů TYPU INT, BIGINT nebo DECIMAL, nejméně společný typ se vloží do double, aby nedošlo ke ztrátě číslic.
-- 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.
Funkce SQL
Chování některých funkcí SQL se může lišit v režimu ANSI (spark.sql.ansi.enabled=true
).
size
: Tato funkce vrátí hodnotu null pro vstup null v režimu ANSI.element_at
:- Tato funkce vyvolá výjimku
ArrayIndexOutOfBoundsException
, pokud používáte neplatné indexy. - Tato funkce vyvolá
NoSuchElementException
výjimku, pokud klíč v mapě neexistuje.
- Tato funkce vyvolá výjimku
elt
: Tato funkce vyvolá výjimkuArrayIndexOutOfBoundsException
, pokud používáte neplatné indexy.make_date
: Tato funkce selže s výjimkou, pokud je datum výsledku neplatné.make_timestamp
: Tato funkce selže s výjimkou, pokud je časové razítko výsledku neplatné.make_interval
: Tato funkce selže s výjimkou, pokud je interval výsledku neplatný.next_day
: Tato funkce vyvoláIllegalArgumentException
, pokud vstup není platný den v týdnu.parse_url
: Tato funkce vyvolá,IllegalArgumentException
pokud vstupní řetězec není platnou adresou URL.to_date
: Tato funkce selže s výjimkou, pokud vstupní řetězec nelze analyzovat nebo je řetězec vzoru neplatný.to_timestamp
: Tato funkce selže s výjimkou, pokud vstupní řetězec nelze analyzovat nebo je řetězec vzoru neplatný.to_unix_timestamp
: Tato funkce selže s výjimkou, pokud vstupní řetězec nelze analyzovat nebo je řetězec vzoru neplatný.unix_timestamp
: Tato funkce selže s výjimkou, pokud vstupní řetězec nelze analyzovat nebo je řetězec vzoru neplatný.
Operátory SQL
Chování některých operátorů SQL se může lišit v režimu ANSI (spark.sql.ansi.enabled=true
).
array_col[index]
: Tento operátor vyvolá,ArrayIndexOutOfBoundsException
pokud používá neplatné indexy.map_col[key]
: Tento operátor vyvolá,NoSuchElementException
pokud klíč v mapě neexistuje.CAST(string_col AS TIMESTAMP)
: Tento operátor selže s výjimkou, pokud vstupní řetězec nelze analyzovat.CAST(string_col AS DATE)
: Tento operátor selže s výjimkou, pokud vstupní řetězec nelze analyzovat.
Užitečné funkce pro režim ANSI
Když je režim ANSI zapnutý, vyvolá výjimky pro neplatné operace. K potlačení těchto výjimek můžete použít následující funkce SQL.
try_cast
: shodná s tím rozdílemCAST
, že vracíNULL
výsledek místo vyvolání výjimky při chybě za běhu.try_add
: shodný s operátorem+
sčítání , s tím rozdílem, že vrátíNULL
výsledek místo vyvolání výjimky při přetečení celočíselné hodnoty.try_divide
: shodný s operátorem/
dělení s tím rozdílem, že vrátíNULL
výsledek místo vyvolání výjimky při dělení 0.
Klíčová slova SQL
Pokud spark.sql.ansi.enabled
je true, Spark SQL použije analyzátor režimu ANSI.
V tomto režimu má Spark SQL dva druhy klíčových slov:
- Vyhrazená klíčová slova: Vyhrazená klíčová slova, která se nedají použít jako identifikátory pro tabulku, zobrazení, sloupec, funkci, alias atd.
- Nezařazený klíčová slova: Klíčová slova, která mají zvláštní význam pouze v konkrétních kontextech a lze ji použít jako identifikátory v jiných kontextech. Jedná se například
EXPLAIN SELECT ...
o příkaz, ale funkci EXPLAIN je možné použít jako identifikátory na jiných místech.
Pokud je režim ANSI zakázaný, Spark SQL má dva druhy klíčových slov:
- Nezaplacená klíčová slova: Stejná definice jako ta, která je povolená v režimu ANSI.
- Klíčová slova typu Strict-Non-reserved: Striktní verze nevyhraděných klíčových slov, která nelze použít jako alias tabulky.
Ve výchozím nastavení spark.sql.ansi.enabled
je false.
Níže je seznam všech klíčových slov ve Spark SQL.
Klíčové slovo | Režim SPARK SQL ANSI | Výchozí režim Spark SQL | SQL-2016 |
---|---|---|---|
ADD | nezařazený | nezařazený | nezařazený |
PO | nezařazený | nezařazený | nezařazený |
ALL | rezervovaný | nezařazený | rezervovaný |
ZMĚNA | nezařazený | nezařazený | rezervovaný |
VŽDY | nezařazený | nezařazený | nezařazený |
ANALÝZA | nezařazený | nezařazený | nezařazený |
A | rezervovaný | nezařazený | rezervovaný |
ANTI | nezařazený | strict-non-reserved | nezařazený |
LIBOVOLNÉ | rezervovaný | nezařazený | rezervovaný |
ARCHIVOVAT | nezařazený | nezařazený | nezařazený |
POLE | nezařazený | nezařazený | rezervovaný |
AS | rezervovaný | nezařazený | rezervovaný |
ASC | nezařazený | nezařazený | nezařazený |
AT | nezařazený | nezařazený | rezervovaný |
OPRÁVNĚNÍ | rezervovaný | nezařazený | rezervovaný |
BETWEEN | nezařazený | nezařazený | rezervovaný |
OBA | rezervovaný | nezařazený | rezervovaný |
KBELÍK | nezařazený | nezařazený | nezařazený |
VĚDRA | nezařazený | nezařazený | nezařazený |
BY | nezařazený | nezařazený | rezervovaný |
MEZIPAMĚŤ | nezařazený | nezařazený | nezařazený |
KASKÁDA | nezařazený | nezařazený | nezařazený |
CASE | rezervovaný | nezařazený | rezervovaný |
CAST | rezervovaný | nezařazený | rezervovaný |
VYMĚNIT | nezařazený | nezařazený | nezařazený |
KONTROLOVAT | rezervovaný | nezařazený | rezervovaný |
JASNÝ | nezařazený | nezařazený | nezařazený |
SHLUK | nezařazený | nezařazený | nezařazený |
CLUSTERED | nezařazený | nezařazený | nezařazený |
CODEGEN | nezařazený | nezařazený | nezařazený |
KOLACIONOVAT | rezervovaný | nezařazený | rezervovaný |
COLLECTION | nezařazený | nezařazený | nezařazený |
SLOUPEC | rezervovaný | nezařazený | rezervovaný |
SLOUPCE | nezařazený | nezařazený | nezařazený |
COMMENT | nezařazený | nezařazený | nezařazený |
SPÁCHAT | nezařazený | nezařazený | rezervovaný |
KOMPAKTNÍ | nezařazený | nezařazený | nezařazený |
KOMPRIMACE | nezařazený | nezařazený | nezařazený |
COMPUTE | nezařazený | nezařazený | nezařazený |
ZŘETĚZIT | nezařazený | nezařazený | nezařazený |
OMEZENÍ | rezervovaný | nezařazený | rezervovaný |
NÁKLADY | nezařazený | nezařazený | nezařazený |
CREATE | rezervovaný | nezařazený | rezervovaný |
KŘÍŽ | rezervovaný | strict-non-reserved | rezervovaný |
KRYCHLE | nezařazený | nezařazený | rezervovaný |
SOUČASNÝ | nezařazený | nezařazený | rezervovaný |
CURRENT_DATE | rezervovaný | nezařazený | rezervovaný |
CURRENT_TIME | rezervovaný | nezařazený | rezervovaný |
CURRENT_TIMESTAMP | rezervovaný | nezařazený | rezervovaný |
CURRENT_USER | rezervovaný | nezařazený | rezervovaný |
DATA | nezařazený | nezařazený | nezařazený |
DATABÁZE | nezařazený | nezařazený | nezařazený |
DATABÁZE | nezařazený | nezařazený | nezařazený |
DAY | nezařazený | nezařazený | nezařazený |
DBPROPERTIES | nezařazený | nezařazený | nezařazený |
DEFINOVANÝ | nezařazený | nezařazený | nezařazený |
DELETE | nezařazený | nezařazený | rezervovaný |
ODDĚLENÝ | nezařazený | nezařazený | nezařazený |
DESC | nezařazený | nezařazený | nezařazený |
POPSAT | nezařazený | nezařazený | rezervovaný |
Systém souborů DFS | nezařazený | nezařazený | nezařazený |
ADRESÁŘE | nezařazený | nezařazený | nezařazený |
ADRESÁŘ | nezařazený | nezařazený | nezařazený |
ZŘETELNÝ | rezervovaný | nezařazený | rezervovaný |
DISTRIBUOVAT | nezařazený | nezařazený | nezařazený |
DIV | nezařazený | nezařazený | nikoli klíčové slovo |
DROP | nezařazený | nezařazený | rezervovaný |
ELSE | rezervovaný | nezařazený | rezervovaný |
END | rezervovaný | nezařazený | rezervovaný |
UNIKNOUT | rezervovaný | nezařazený | rezervovaný |
UPRCHL | nezařazený | nezařazený | nezařazený |
EXCEPT | rezervovaný | strict-non-reserved | rezervovaný |
VÝMĚNA | nezařazený | nezařazený | nezařazený |
EXISTS | nezařazený | nezařazený | rezervovaný |
EXPLAIN | nezařazený | nezařazený | nezařazený |
VÝVOZ | nezařazený | nezařazený | nezařazený |
EXTENDED | nezařazený | nezařazený | nezařazený |
EXTERNÍ | nezařazený | nezařazený | rezervovaný |
EXTRAHOVAT | nezařazený | nezařazený | rezervovaný |
FALSE | rezervovaný | nezařazený | rezervovaný |
PŘINÉST | rezervovaný | nezařazený | rezervovaný |
POLE | nezařazený | nezařazený | nezařazený |
FILTR | rezervovaný | nezařazený | rezervovaný |
FILEFORMAT | nezařazený | nezařazený | nezařazený |
FIRST | nezařazený | nezařazený | nezařazený |
FN | nezařazený | nezařazený | nezařazený |
NÁSLEDUJÍCÍ | nezařazený | nezařazený | nezařazený |
FOR | rezervovaný | nezařazený | rezervovaný |
ZAHRANIČNÍ | rezervovaný | nezařazený | rezervovaný |
FORMÁT | nezařazený | nezařazený | nezařazený |
NAFORMÁTOVANÝ | nezařazený | nezařazený | nezařazený |
FROM | rezervovaný | nezařazený | rezervovaný |
PLNÝ | rezervovaný | strict-non-reserved | rezervovaný |
FUNCTION | nezařazený | nezařazený | rezervovaný |
FUNKCE | nezařazený | nezařazený | nezařazený |
GENEROVANÝ | nezařazený | nezařazený | nezařazený |
GLOBÁLNÍ | nezařazený | nezařazený | rezervovaný |
GRANT | rezervovaný | nezařazený | rezervovaný |
UDĚLUJE | nezařazený | nezařazený | nezařazený |
GROUP | rezervovaný | nezařazený | rezervovaný |
SESKUPENÍ | nezařazený | nezařazený | rezervovaný |
HAVING | rezervovaný | nezařazený | rezervovaný |
HODINA | nezařazený | nezařazený | nezařazený |
IF | nezařazený | nezařazený | nikoli klíčové slovo |
IGNORE | nezařazený | nezařazený | nezařazený |
DOVOZ | nezařazený | nezařazený | nezařazený |
IN | rezervovaný | nezařazený | rezervovaný |
INDEX | nezařazený | nezařazený | nezařazený |
INDEXY | nezařazený | nezařazený | nezařazený |
VNITŘNÍ | rezervovaný | strict-non-reserved | rezervovaný |
INPATH | nezařazený | nezařazený | nezařazený |
INPUTFORMAT | nezařazený | nezařazený | nezařazený |
INSERT | nezařazený | nezařazený | rezervovaný |
INTERSECT | rezervovaný | strict-non-reserved | rezervovaný |
INTERVAL | nezařazený | nezařazený | rezervovaný |
INTO | rezervovaný | nezařazený | rezervovaný |
IS | rezervovaný | nezařazený | rezervovaný |
POLOŽKY | nezařazený | nezařazený | nezařazený |
JOIN | rezervovaný | strict-non-reserved | rezervovaný |
KLÍČ | nezařazený | nezařazený | nezařazený |
KLÍČE | nezařazený | nezařazený | nezařazený |
LAST | nezařazený | nezařazený | nezařazený |
BOČNÍ | rezervovaný | strict-non-reserved | rezervovaný |
LÍNÝ | nezařazený | nezařazený | nezařazený |
VEDOUCÍ | rezervovaný | nezařazený | rezervovaný |
LEFT | rezervovaný | strict-non-reserved | rezervovaný |
LIKE | nezařazený | nezařazený | rezervovaný |
ILIKE | nezařazený | nezařazený | nezařazený |
LIMIT | nezařazený | nezařazený | nezařazený |
ŘÁDKY | nezařazený | nezařazený | nezařazený |
SEZNAM | nezařazený | nezařazený | nezařazený |
NÁKLAD | nezařazený | nezařazený | nezařazený |
LOCAL | nezařazený | nezařazený | rezervovaný |
UMÍSTĚNÍ | nezařazený | nezařazený | nezařazený |
ZAMKNOUT | nezařazený | nezařazený | nezařazený |
ZÁMKY | nezařazený | nezařazený | nezařazený |
LOGICKÝ | nezařazený | nezařazený | nezařazený |
MACRO | nezařazený | nezařazený | nezařazený |
MAPA | nezařazený | nezařazený | nezařazený |
SLÍCOVANÝ | nezařazený | nezařazený | nezařazený |
SLOUČIT | nezařazený | nezařazený | nezařazený |
MINUTA | nezařazený | nezařazený | nezařazený |
MINUS | nezařazený | strict-non-reserved | nezařazený |
MONTH | nezařazený | nezařazený | nezařazený |
MSCK | nezařazený | nezařazený | nezařazený |
NAMESPACE | nezařazený | nezařazený | nezařazený |
OBORY NÁZVŮ | nezařazený | nezařazený | nezařazený |
PŘIROZENÝ | rezervovaný | strict-non-reserved | rezervovaný |
NE | nezařazený | nezařazený | rezervovaný |
NOT | rezervovaný | nezařazený | rezervovaný |
NULL | rezervovaný | nezařazený | rezervovaný |
NULLS | nezařazený | nezařazený | nezařazený |
OF | nezařazený | nezařazený | rezervovaný |
ON | rezervovaný | strict-non-reserved | rezervovaný |
POUZE | rezervovaný | nezařazený | rezervovaný |
OPTION | nezařazený | nezařazený | nezařazený |
OPTIONS | nezařazený | nezařazený | nezařazený |
NEBO | rezervovaný | nezařazený | rezervovaný |
OBJEDNÁVKA | rezervovaný | nezařazený | rezervovaný |
VEN | nezařazený | nezařazený | rezervovaný |
VNĚJŠÍ | rezervovaný | nezařazený | rezervovaný |
OUTPUTFORMAT | nezařazený | nezařazený | nezařazený |
PŘES | nezařazený | nezařazený | nezařazený |
OVERLAPS | rezervovaný | nezařazený | rezervovaný |
PŘEKRYTÍ | nezařazený | nezařazený | nezařazený |
PŘEPSAT | nezařazený | nezařazený | nezařazený |
ODDÍL | nezařazený | nezařazený | rezervovaný |
SEGMENTOVANÝ | nezařazený | nezařazený | nezařazený |
ODDÍLY | nezařazený | nezařazený | nezařazený |
PROCENTO | nezařazený | nezařazený | nezařazený |
ČEP | nezařazený | nezařazený | nezařazený |
UMISŤOVÁNÍ | nezařazený | nezařazený | nezařazený |
POSTAVENÍ | nezařazený | nezařazený | rezervovaný |
PŘEDCHOZÍ | nezařazený | nezařazený | nezařazený |
PRIMÁRNÍ | rezervovaný | nezařazený | rezervovaný |
PRINCIPY | nezařazený | nezařazený | nezařazený |
VLASTNOSTI | nezařazený | nezařazený | nezařazený |
PURGE | nezařazený | nezařazený | nezařazený |
KVALIFIKOVAT | rezervovaný | nezařazený | rezervovaný |
DOTAZ | nezařazený | nezařazený | nezařazený |
ROZMEZÍ | nezařazený | nezařazený | rezervovaný |
PŘÍJEMCE | nezařazený | nezařazený | nezařazený |
PŘÍJEMCI | nezařazený | nezařazený | nezařazený |
RECORDREADER | nezařazený | nezařazený | nezařazený |
RECORDWRITER | nezařazený | nezařazený | nezařazený |
ZOTAVIT SE | nezařazený | nezařazený | nezařazený |
ZMENŠIT | nezařazený | nezařazený | nezařazený |
ODKAZY | rezervovaný | nezařazený | rezervovaný |
REFRESH | nezařazený | nezařazený | nezařazený |
REGEXP | nezařazený | nezařazený | nikoli klíčové slovo |
ODEBRAT | nezařazený | nezařazený | nezařazený |
RENAME | nezařazený | nezařazený | nezařazený |
OPRAVIT | nezařazený | nezařazený | nezařazený |
REPLACE | nezařazený | nezařazený | nezařazený |
RESET | nezařazený | nezařazený | nezařazený |
RESPEKT | nezařazený | nezařazený | nezařazený |
OMEZIT | nezařazený | nezařazený | nezařazený |
REVOKE | nezařazený | nezařazený | rezervovaný |
RIGHT | rezervovaný | strict-non-reserved | rezervovaný |
RLIKE | nezařazený | nezařazený | nezařazený |
ROLE | nezařazený | nezařazený | nezařazený |
ROLE | nezařazený | nezařazený | nezařazený |
REDUKCE | nezařazený | nezařazený | rezervovaný |
KUMULATIVNÍ AKTUALIZACE | nezařazený | nezařazený | rezervovaný |
ROW | nezařazený | nezařazený | rezervovaný |
řádky | nezařazený | nezařazený | rezervovaný |
SCHÉMA | nezařazený | nezařazený | nezařazený |
SCHÉMATA | nezařazený | nezařazený | nikoli klíčové slovo |
VTEŘINA | nezařazený | nezařazený | nezařazený |
VÝBĚR | rezervovaný | nezařazený | rezervovaný |
POLO | nezařazený | strict-non-reserved | nezařazený |
ODDĚLEN | nezařazený | nezařazený | nezařazený |
SERDE | nezařazený | nezařazený | nezařazený |
SERDEPROPERTIES | nezařazený | nezařazený | nezařazený |
SESSION_USER | rezervovaný | nezařazený | rezervovaný |
SET | nezařazený | nezařazený | rezervovaný |
NASTAVUJE | nezařazený | nezařazený | nezařazený |
SDÍLET | nezařazený | nezařazený | nezařazený |
SDÍLÍ | nezařazený | nezařazený | nezařazený |
UKÁZAT | nezařazený | nezařazený | nezařazený |
ZKOSENÝ | nezařazený | nezařazený | nezařazený |
NĚJAKÝ | rezervovaný | nezařazený | rezervovaný |
TŘÍDIT | nezařazený | nezařazený | nezařazený |
SEŘAZENÝ | nezařazený | nezařazený | nezařazený |
START | nezařazený | nezařazený | rezervovaný |
STATISTIKA | nezařazený | nezařazený | nezařazený |
ULOŽENÝ | nezařazený | nezařazený | nezařazený |
TVOŘIT VRSTVY | nezařazený | nezařazený | nezařazený |
STRUCT | nezařazený | nezařazený | nezařazený |
SUBSTR | nezařazený | nezařazený | nezařazený |
SUBSTRING | nezařazený | nezařazený | nezařazený |
SYNCHRONIZOVAT | nezařazený | nezařazený | nezařazený |
TABULKA | rezervovaný | nezařazený | rezervovaný |
TABULKY | nezařazený | nezařazený | nezařazený |
TABLESAMPLE | nezařazený | nezařazený | rezervovaný |
TBLPROPERTIES | nezařazený | nezařazený | nezařazený |
Pracovník na výpomoc | nezařazený | nezařazený | nikoli klíčové slovo |
DOČASNÝ | nezařazený | nezařazený | nezařazený |
UKONČENÝ | nezařazený | nezařazený | nezařazený |
THEN | rezervovaný | nezařazený | rezervovaný |
TIME | rezervovaný | nezařazený | rezervovaný |
TO | rezervovaný | nezařazený | rezervovaný |
DOTYK | nezařazený | nezařazený | nezařazený |
STOPOVÁNÍ | rezervovaný | nezařazený | rezervovaný |
TRANSAKCE | nezařazený | nezařazený | nezařazený |
TRANSAKCE | nezařazený | nezařazený | nezařazený |
TRANSFORMOVAT | nezařazený | nezařazený | nezařazený |
TRIM | nezařazený | nezařazený | nezařazený |
TRUE | nezařazený | nezařazený | rezervovaný |
ZKRÁTIT | nezařazený | nezařazený | rezervovaný |
TRY_CAST | nezařazený | nezařazený | nezařazený |
TYP | nezařazený | nezařazený | nezařazený |
UNARCHIVE | nezařazený | nezařazený | nezařazený |
NEOMEZENÝ | nezařazený | nezařazený | nezařazený |
UNCACHE | nezařazený | nezařazený | nezařazený |
UNION | rezervovaný | strict-non-reserved | rezervovaný |
JEDINEČNÝ | rezervovaný | nezařazený | rezervovaný |
Neznámé | rezervovaný | nezařazený | rezervovaný |
ODEMKNOUT | nezařazený | nezařazený | nezařazený |
NEUROVNANÝ | nezařazený | nezařazený | nezařazený |
UPDATE | nezařazený | nezařazený | rezervovaný |
USE | nezařazený | nezařazený | nezařazený |
UŽIVATEL | rezervovaný | nezařazený | rezervovaný |
USING | rezervovaný | strict-non-reserved | rezervovaný |
HODNOTY | nezařazený | nezařazený | rezervovaný |
ZOBRAZIT | nezařazený | nezařazený | nezařazený |
POHLEDY | nezařazený | nezařazený | nezařazený |
Když... | rezervovaný | nezařazený | rezervovaný |
WHERE | rezervovaný | nezařazený | rezervovaný |
OKNO | nezařazený | nezařazený | rezervovaný |
WITH | rezervovaný | nezařazený | rezervovaný |
YEAR | nezařazený | nezařazený | nezařazený |
ZÓNA | nezařazený | nezařazený | nezařazený |