ANSI-efterlevnad
Gäller för: Databricks Runtime
Spark SQL har två alternativ för att stödja kompatibilitet med ANSI SQL-standarden: spark.sql.ansi.enabled
och spark.sql.storeAssignmentPolicy
.
När spark.sql.ansi.enabled
är inställt på true
använder Spark SQL en ANSI-kompatibel dialekt i stället för att vara Hive-kompatibel. Spark genererar till exempel ett undantag vid körning i stället för att returnera nullresultat om indata till en SQL-operator/-funktion är ogiltiga. Vissa ANSI-dialektfunktioner kanske inte direkt kommer från ANSI SQL-standarden, men deras beteenden överensstämmer med ANSI SQL-formatmallen.
Dessutom har Spark SQL ett oberoende alternativ för att styra implicita gjutningsbeteenden när rader infogas i en tabell. Gjutningsbeteendena definieras som lagringstilldelningsregler i standarden.
När spark.sql.storeAssignmentPolicy
är inställt på ANSI
följer Spark SQL ANSI-lagringstilldelningsreglerna. Det här är en separat konfiguration eftersom standardvärdet är ANSI
, medan konfigurationen spark.sql.ansi.enabled
är inaktiverad som standard.
I följande tabell sammanfattas beteendet:
Egenskapens namn | Standardvärde | Innebörd |
---|---|---|
spark.sql.ansi.enabled |
falskt | När det är sant försöker Spark följa ANSI SQL-specifikationen: * Genererar ett körningsundanstag om ett spill inträffar i en åtgärd i ett heltal eller decimalfält. * Förbjuder att använda de reserverade nyckelorden i ANSI SQL som identifierare i SQL-parsern. |
spark.sql.storeAssignmentPolicy |
ANSI | När du infogar ett värde i en kolumn med en annan datatyp utför Spark typkonvertering. Det finns tre principer för typen tvångsregler: ANSI , legacy och strict .* ANSI : Spark utför typtvånget enligt ANSI SQL. I praktiken är beteendet mestadels detsamma som PostgreSQL. Det tillåter inte vissa orimliga typkonverteringar, till exempel konvertering av sträng till int eller dubbel till booleskt värde.* legacy : Spark tillåter typtvång så länge det är en giltig Cast, som är mycket lös. Till exempel tillåts konvertering av sträng till int eller double till booleskt värde. Det är också det enda beteendet i Spark 2.x och det är kompatibelt med Hive.* strict : Spark tillåter inte någon möjlig precisionsförlust eller datatrunkering i typtvång, till exempel är det inte tillåtet att konvertera dubbel till int eller decimal till dubbel. |
Följande underavsnitt visar beteendeändringar i aritmetiska åtgärder, typkonverteringar och SQL-parsning när ANSI-läge är aktiverat. För typkonverteringar i Spark SQL finns det tre typer av dem och den här artikeln introducerar dem en i taget: cast, store assignment och type coercion.
Aritmetiska åtgärder
I Spark SQL kontrolleras inte aritmetiska åtgärder som utförs på numeriska typer (med undantag för decimaler) för spill som standard.
Det innebär att om en åtgärd orsakar spill är resultatet detsamma med motsvarande åtgärd i ett Java- eller Scala-program (om summan av två heltal till exempel är högre än det maximala värde som kan representeras är resultatet ett negativt tal). Å andra sidan returnerar Spark SQL null för decimala spill.
När spark.sql.ansi.enabled
är inställt på true
och ett spill inträffar i numeriska och intervallaritmetiska åtgärder, genererar det ett aritmetiskt undantag vid körning.
-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
error: integer overflow
-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
-2147483648
Kasta
När spark.sql.ansi.enabled
är inställt på true
genererar explicit gjutning av CAST
syntax ett körningsundantag för olagliga gjutningsmönster som definierats i standarden, till exempel gjutningar från en sträng till ett heltal.
CAST
Satsen i Spark ANSI-läge följer syntaxreglerna i avsnitt 6.13 "cast specification" i ISO/IEC 9075-2:2011 Information technology – Database language - SQL – Part 2: Foundation (SQL/Foundation), förutom att det särskilt tillåter följande enkla typkonverteringar som inte tillåts enligt ANSI-standarden:
- NumericType <=> BooleanType
- StringType <=> BinaryType
De giltiga kombinationerna av käll- och måldatatypen i ett CAST
uttryck anges av följande tabell.
"Y" anger att kombinationen är syntaktiskt giltig utan begränsning och "N" anger att kombinationen inte är giltig.
SourceTarget | Numerisk | Sträng | Date | Timestamp | Intervall | Boolesk | Binär | Matris | Karta | Struct-datatyp |
---|---|---|---|---|---|---|---|---|---|---|
Numerisk | Y | Y | N | N | N | Y | N | N | N | N |
Sträng | Y | Y | Y | Y | Y | Y | Y | N | N | N |
Date | N | Y | Y | Y | N | N | N | N | N | N |
Timestamp | N | Y | Y | Y | N | N | N | N | N | N |
Intervall | N | Y | N | N | Y | N | N | N | N | N |
Boolesk | Y | Y | N | N | N | Y | N | N | N | N |
Binär | Y | N | N | N | N | N | Y | N | N | N |
Matris | N | N | N | N | N | N | N | Y | N | N |
Karta | N | N | N | N | N | N | N | N | Y | N |
Struct-datatyp | 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: invalid input syntax for type numeric: a
> SELECT CAST(2147483648L AS INT);
error: Casting 2147483648 to int causes overflow
> SELECT CAST(DATE'2020-01-01' AS INT)
error: cannot resolve 'CAST(DATE '2020-01-01' AS INT)' due to data type mismatch: cannot cast date to int.
To convert values from date to int, you can use function UNIX_DATE instead.
-- `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
-- Examples of store assignment rules
> CREATE TABLE t (v INT);
-- `spark.sql.storeAssignmentPolicy=ANSI`
> INSERT INTO t VALUES ('1');
error: Cannot write incompatible data to table '`default`.`t`':
- Cannot safely cast 'v': string to int;
-- `spark.sql.storeAssignmentPolicy=LEGACY` (This is a legacy behavior until Spark 2.x)
> INSERT INTO t VALUES ('1');
> SELECT * FROM t;
1
Butikstilldelning
Som vi nämnde i början, när spark.sql.storeAssignmentPolicy
är inställt ANSI
på (vilket är standardvärdet), följer Spark SQL ANSI-lagringstilldelningsreglerna för tabellinfogningar. De giltiga kombinationerna av käll- och måldatatypen i tabellinfogningar anges av följande tabell.
SourceTarget | Numerisk | Sträng | Date | Timestamp | Intervall | Boolesk | Binär | Matris | Karta | Struct-datatyp |
---|---|---|---|---|---|---|---|---|---|---|
Numerisk | Y | Y | N | N | N | N | N | N | N | N |
Sträng | N | Y | N | N | N | N | N | N | N | N |
Date | N | Y | Y | Y | N | N | N | N | N | N |
Timestamp | N | Y | Y | Y | N | N | N | N | N | N |
Intervall | N | Y | N | N | Y | N | N | N | N | N |
Boolesk | N | Y | N | N | N | Y | N | N | N | N |
Binär | N | Y | N | N | N | N | Y | N | N | N |
Matris | N | N | N | N | N | N | N | Y* | N | N |
Karta | N | N | N | N | N | N | N | N | Y* | N |
Struct-datatyp | N | N | N | N | N | N | N | N | N | Y* |
- För matris-/kart-/structtyper tillämpas kontrollregeln för datatyp rekursivt på dess komponentelement.
Under tabellinfogningen genererar Spark undantag för numeriskt värdes spill.
> CREATE TABLE test(i INT);
> INSERT INTO test VALUES (2147483648L);
error: Casting 2147483648 to int causes overflow
Typtvång
Ange befordran och prioritet
När spark.sql.ansi.enabled
är inställt på true
använder Spark SQL flera regler som styr hur konflikter mellan datatyper löses.
Kärnan i den här konfliktlösningen är typprioritetslistan som definierar om värden för en viss datatyp kan höjas upp till en annan datatyp implicit.
Datatyp | prioritetslista (från smalaste till bredaste) |
---|---|
Byte | Byte -> Kort -> Int -> Long -> Decimal -> Float* -> Double |
Kort | Kort -> Int -> Long -> Decimal-> Float* -> Double |
Int | Int -> Long - Decimal ->> Float* -> Double |
Lång | Long -> Decimal -> Float* -> Double |
Decimal | Decimal -> Float* -> Double |
Float | Flyttal –> dubbel |
Double | Double |
Date | Datum –> tidsstämpel |
Timestamp | Timestamp |
Sträng | Sträng |
Binär | Binär |
Boolesk | Boolesk |
Intervall | Intervall |
Karta | Karta** |
Matris | Array** |
Struct-datatyp | Struct** |
- För minsta vanliga typmatchningsflöt hoppas vi över för att undvika förlust av precision.
** För en komplex typ gäller prioritetsregeln rekursivt för dess komponentelement.
Särskilda regler gäller för strängtypen och otypade NULL. En NULL kan höjas upp till vilken annan typ som helst, medan en sträng kan höjas upp till valfri enkel datatyp.
Det här är en grafisk beskrivning av prioritetslistan som ett riktat träd:
Minsta vanliga typmatchning
Den minst vanliga typen från en uppsättning typer är den smalaste typen som kan nås från prioritetslistan av alla element i uppsättningen av typer.
Den minsta vanliga typmatchningen används för att:
- Bestäm om en funktion som förväntar sig en parameter av en typ kan anropas med ett argument av en smalare typ.
- Härled argumenttypen för funktioner som förväntar sig en delad argumenttyp för flera parametrar, till exempel coalesce, least eller greatest.
- Härled operandtyperna för operatorer som aritmetiska åtgärder eller jämförelser.
- Härled resultattypen för uttryck som skiftlägesuttrycket.
- Härled element-, nyckel- eller värdetyperna för matris- och kartkonstruktorer.
Särskilda regler tillämpas om den minst vanliga typen matchar FLOAT. Med flyttalstypvärden, om någon av typerna är INT, BIGINT eller DECIMAL, pushas den minst vanliga typen till DOUBLE för att undvika potentiell förlust av siffror.
-- 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-funktioner
Beteendet för vissa SQL-funktioner kan vara annorlunda i ANSI-läge (spark.sql.ansi.enabled=true
).
size
: Den här funktionen returnerar null för null-indata under ANSI-läge.element_at
:- Den här funktionen genererar
ArrayIndexOutOfBoundsException
om du använder ogiltiga index. - Den här funktionen genererar
NoSuchElementException
om nyckeln inte finns på kartan.
- Den här funktionen genererar
elt
: Den här funktionen genererarArrayIndexOutOfBoundsException
om du använder ogiltiga index.make_date
: Den här funktionen misslyckas med ett undantag om resultatdatumet är ogiltigt.make_timestamp
: Den här funktionen misslyckas med ett undantag om resultattidsstämpeln är ogiltig.make_interval
: Den här funktionen misslyckas med ett undantag om resultatintervallet är ogiltigt.next_day
: Den här funktionen genererarIllegalArgumentException
om indata inte är en giltig veckodag.parse_url
: Den här funktionen utlöserIllegalArgumentException
om en indatasträng inte är en giltig URL.to_date
: Den här funktionen misslyckas med ett undantag om indatasträngen inte kan parsas eller om mönstersträngen är ogiltig.to_timestamp
: Den här funktionen misslyckas med ett undantag om indatasträngen inte kan parsas eller om mönstersträngen är ogiltig.to_unix_timestamp
: Den här funktionen misslyckas med ett undantag om indatasträngen inte kan parsas eller om mönstersträngen är ogiltig.unix_timestamp
: Den här funktionen misslyckas med ett undantag om indatasträngen inte kan parsas eller om mönstersträngen är ogiltig.
SQL-operatorer
Beteendet för vissa SQL-operatorer kan vara annorlunda under ANSI-läge (spark.sql.ansi.enabled=true
).
array_col[index]
: Den här operatorn genererarArrayIndexOutOfBoundsException
om du använder ogiltiga index.map_col[key]
: Den här operatorn genererarNoSuchElementException
om nyckeln inte finns på kartan.CAST(string_col AS TIMESTAMP)
: Den här operatorn misslyckas med ett undantag om indatasträngen inte kan parsas.CAST(string_col AS DATE)
: Den här operatorn misslyckas med ett undantag om indatasträngen inte kan parsas.
Användbara funktioner för ANSI-läge
När ANSI-läget är aktiverat utlöser det undantag för ogiltiga åtgärder. Du kan använda följande SQL-funktioner för att förhindra sådana undantag.
try_cast
: identisk medCAST
, förutom att det returnerarNULL
resultat i stället för att utlösa ett undantag vid körningsfel.try_add
: identisk med add-operatorn+
, förutom att den returnerarNULL
resultat i stället för att utlösa ett undantag för ett heltalsvärdesspill.try_divide
: identisk med divisionsoperatorn/
, förutom att den returnerarNULL
resultat i stället för att utlösa ett undantag vid uppdelning av 0.
SQL-nyckelord
När spark.sql.ansi.enabled
är sant använder Spark SQL ANSI-lägesparsern.
I det här läget har Spark SQL två typer av nyckelord:
- Reserverade nyckelord: Nyckelord som är reserverade och inte kan användas som identifierare för tabell, vy, kolumn, funktion, alias osv.
- Icke-reserverade nyckelord: Nyckelord som har en särskild betydelse endast i vissa kontexter och som kan användas som identifierare i andra kontexter. Är till exempel
EXPLAIN SELECT ...
ett kommando, men EXPLAIN kan användas som identifierare på andra platser.
När ANSI-läget är inaktiverat har Spark SQL två typer av nyckelord:
- Icke-reserverade nyckelord: Samma definition som när ANSI-läget aktiveras.
- Strikt icke-reserverade nyckelord: En strikt version av icke-reserverade nyckelord som inte kan användas som tabellalias.
Som standard spark.sql.ansi.enabled
är falskt.
Nedan visas en lista över alla nyckelord i Spark SQL.
Sökord | Spark SQL ANSI-läge |
Spark SQL Standardläge |
SQL-2016 |
---|---|---|---|
ADD | icke-reserverad | icke-reserverad | icke-reserverad |
EFTER | icke-reserverad | icke-reserverad | icke-reserverad |
ALL | Reserverade | icke-reserverad | Reserverade |
ALTER | icke-reserverad | icke-reserverad | Reserverade |
ALLTID | icke-reserverad | icke-reserverad | icke-reserverad |
ANALYSERA | icke-reserverad | icke-reserverad | icke-reserverad |
AND | Reserverade | icke-reserverad | Reserverade |
ANTI | icke-reserverad | strikt icke-reserverad | icke-reserverad |
NÅGON | Reserverade | icke-reserverad | Reserverade |
ARKIV | icke-reserverad | icke-reserverad | icke-reserverad |
ARRAY | icke-reserverad | icke-reserverad | Reserverade |
AS | Reserverade | icke-reserverad | Reserverade |
ASC | icke-reserverad | icke-reserverad | icke-reserverad |
AT | icke-reserverad | icke-reserverad | Reserverade |
AUKTORISERING | Reserverade | icke-reserverad | Reserverade |
BETWEEN | icke-reserverad | icke-reserverad | Reserverade |
BÅDE | Reserverade | icke-reserverad | Reserverade |
HINK | icke-reserverad | icke-reserverad | icke-reserverad |
HINKAR | icke-reserverad | icke-reserverad | icke-reserverad |
BY | icke-reserverad | icke-reserverad | Reserverade |
CACHE | icke-reserverad | icke-reserverad | icke-reserverad |
CASCADE | icke-reserverad | icke-reserverad | icke-reserverad |
CASE | Reserverade | icke-reserverad | Reserverade |
CAST | Reserverade | icke-reserverad | Reserverade |
ÄNDRA | icke-reserverad | icke-reserverad | icke-reserverad |
KONTROLLERA | Reserverade | icke-reserverad | Reserverade |
TYDLIG | icke-reserverad | icke-reserverad | icke-reserverad |
KLUSTER | icke-reserverad | icke-reserverad | icke-reserverad |
KLUSTRADE | icke-reserverad | icke-reserverad | icke-reserverad |
CODEGEN | icke-reserverad | icke-reserverad | icke-reserverad |
SORTERA | Reserverade | icke-reserverad | Reserverade |
SAMLING | icke-reserverad | icke-reserverad | icke-reserverad |
KOLUMN | Reserverade | icke-reserverad | Reserverade |
KOLUMNER | icke-reserverad | icke-reserverad | icke-reserverad |
COMMENT | icke-reserverad | icke-reserverad | icke-reserverad |
BEGÅ | icke-reserverad | icke-reserverad | Reserverade |
KOMPAKT | icke-reserverad | icke-reserverad | icke-reserverad |
KOMPRIMERING | icke-reserverad | icke-reserverad | icke-reserverad |
BERÄKNA | icke-reserverad | icke-reserverad | icke-reserverad |
CONCATENATE | icke-reserverad | icke-reserverad | icke-reserverad |
BEGRÄNSNING | Reserverade | icke-reserverad | Reserverade |
KOSTNAD | icke-reserverad | icke-reserverad | icke-reserverad |
CREATE | Reserverade | icke-reserverad | Reserverade |
CROSS | Reserverade | strikt icke-reserverad | Reserverade |
KUB | icke-reserverad | icke-reserverad | Reserverade |
NUVARANDE | icke-reserverad | icke-reserverad | Reserverade |
CURRENT_DATE | Reserverade | icke-reserverad | Reserverade |
CURRENT_TIME | Reserverade | icke-reserverad | Reserverade |
CURRENT_TIMESTAMP | Reserverade | icke-reserverad | Reserverade |
CURRENT_USER | Reserverade | icke-reserverad | Reserverade |
DATA | icke-reserverad | icke-reserverad | icke-reserverad |
DATABASE | icke-reserverad | icke-reserverad | icke-reserverad |
DATABASER | icke-reserverad | icke-reserverad | icke-reserverad |
DAY | icke-reserverad | icke-reserverad | icke-reserverad |
DBPROPERTIES | icke-reserverad | icke-reserverad | icke-reserverad |
DEFINIERAS | icke-reserverad | icke-reserverad | icke-reserverad |
DELETE | icke-reserverad | icke-reserverad | Reserverade |
AVGRÄNSADE | icke-reserverad | icke-reserverad | icke-reserverad |
DESC | icke-reserverad | icke-reserverad | icke-reserverad |
BESKRIVA | icke-reserverad | icke-reserverad | Reserverade |
DFS | icke-reserverad | icke-reserverad | icke-reserverad |
KATALOGER | icke-reserverad | icke-reserverad | icke-reserverad |
KATALOG | icke-reserverad | icke-reserverad | icke-reserverad |
DISTINKTA | Reserverade | icke-reserverad | Reserverade |
DISTRIBUERA | icke-reserverad | icke-reserverad | icke-reserverad |
DIV | icke-reserverad | icke-reserverad | inte ett nyckelord |
DROP | icke-reserverad | icke-reserverad | Reserverade |
ANNAT | Reserverade | icke-reserverad | Reserverade |
SLUTET | Reserverade | icke-reserverad | Reserverade |
FLY | Reserverade | icke-reserverad | Reserverade |
FLYDDE | icke-reserverad | icke-reserverad | icke-reserverad |
EXCEPT | Reserverade | strikt icke-reserverad | Reserverade |
EXCHANGE | icke-reserverad | icke-reserverad | icke-reserverad |
FINNS | icke-reserverad | icke-reserverad | Reserverade |
EXPLAIN | icke-reserverad | icke-reserverad | icke-reserverad |
EXPORT | icke-reserverad | icke-reserverad | icke-reserverad |
UTÖKAD | icke-reserverad | icke-reserverad | icke-reserverad |
EXTERNA | icke-reserverad | icke-reserverad | Reserverade |
EXTRACT | icke-reserverad | icke-reserverad | Reserverade |
FALSE | Reserverade | icke-reserverad | Reserverade |
HÄMTA | Reserverade | icke-reserverad | Reserverade |
FÄLT | icke-reserverad | icke-reserverad | icke-reserverad |
FILTRERA | Reserverade | icke-reserverad | Reserverade |
FILFORMAT | icke-reserverad | icke-reserverad | icke-reserverad |
FIRST | icke-reserverad | icke-reserverad | icke-reserverad |
FN | icke-reserverad | icke-reserverad | icke-reserverad |
FÖLJANDE | icke-reserverad | icke-reserverad | icke-reserverad |
FÖR | Reserverade | icke-reserverad | Reserverade |
UTLÄNDSK | Reserverade | icke-reserverad | Reserverade |
FORMAT | icke-reserverad | icke-reserverad | icke-reserverad |
FORMATERAD | icke-reserverad | icke-reserverad | icke-reserverad |
FROM | Reserverade | icke-reserverad | Reserverade |
FULL | Reserverade | strikt icke-reserverad | Reserverade |
FUNKTION | icke-reserverad | icke-reserverad | Reserverade |
FUNKTIONER | icke-reserverad | icke-reserverad | icke-reserverad |
GENERERAS | icke-reserverad | icke-reserverad | icke-reserverad |
GLOBAL | icke-reserverad | icke-reserverad | Reserverade |
GRANT | Reserverade | icke-reserverad | Reserverade |
BIDRAG | icke-reserverad | icke-reserverad | icke-reserverad |
GRUPP | Reserverade | icke-reserverad | Reserverade |
GRUPPERING | icke-reserverad | icke-reserverad | Reserverade |
HAVING | Reserverade | icke-reserverad | Reserverade |
HOUR | icke-reserverad | icke-reserverad | icke-reserverad |
IF | icke-reserverad | icke-reserverad | inte ett nyckelord |
IGNORE | icke-reserverad | icke-reserverad | icke-reserverad |
IMPORTERA | icke-reserverad | icke-reserverad | icke-reserverad |
IN | Reserverade | icke-reserverad | Reserverade |
INDEX | icke-reserverad | icke-reserverad | icke-reserverad |
INDEX | icke-reserverad | icke-reserverad | icke-reserverad |
INRE | Reserverade | strikt icke-reserverad | Reserverade |
INPATH | icke-reserverad | icke-reserverad | icke-reserverad |
INPUTFORMAT | icke-reserverad | icke-reserverad | icke-reserverad |
INSERT | icke-reserverad | icke-reserverad | Reserverade |
INTERSECT | Reserverade | strikt icke-reserverad | Reserverade |
INTERVALL | icke-reserverad | icke-reserverad | Reserverade |
INTO | Reserverade | icke-reserverad | Reserverade |
IS | Reserverade | icke-reserverad | Reserverade |
OBJEKT | icke-reserverad | icke-reserverad | icke-reserverad |
JOIN | Reserverade | strikt icke-reserverad | Reserverade |
NYCKEL | icke-reserverad | icke-reserverad | icke-reserverad |
NYCKLAR | icke-reserverad | icke-reserverad | icke-reserverad |
LAST | icke-reserverad | icke-reserverad | icke-reserverad |
LATERALA | Reserverade | strikt icke-reserverad | Reserverade |
LATA | icke-reserverad | icke-reserverad | icke-reserverad |
LEDANDE | Reserverade | icke-reserverad | Reserverade |
LEFT | Reserverade | strikt icke-reserverad | Reserverade |
LIKE | icke-reserverad | icke-reserverad | Reserverade |
ILIKE | icke-reserverad | icke-reserverad | icke-reserverad |
GRÄNS | icke-reserverad | icke-reserverad | icke-reserverad |
LINJER | icke-reserverad | icke-reserverad | icke-reserverad |
LISTA | icke-reserverad | icke-reserverad | icke-reserverad |
LADDA | icke-reserverad | icke-reserverad | icke-reserverad |
LOCAL | icke-reserverad | icke-reserverad | Reserverade |
PLATS | icke-reserverad | icke-reserverad | icke-reserverad |
LÅSA | icke-reserverad | icke-reserverad | icke-reserverad |
LÅS | icke-reserverad | icke-reserverad | icke-reserverad |
LOGISKA | icke-reserverad | icke-reserverad | icke-reserverad |
MAKRO | icke-reserverad | icke-reserverad | icke-reserverad |
KARTA | icke-reserverad | icke-reserverad | icke-reserverad |
MATCHADE | icke-reserverad | icke-reserverad | icke-reserverad |
SAMMANFOGA | icke-reserverad | icke-reserverad | icke-reserverad |
MINUTE | icke-reserverad | icke-reserverad | icke-reserverad |
MINUS | icke-reserverad | strikt icke-reserverad | icke-reserverad |
MONTH | icke-reserverad | icke-reserverad | icke-reserverad |
MSCK | icke-reserverad | icke-reserverad | icke-reserverad |
NAMNOMRÅDE | icke-reserverad | icke-reserverad | icke-reserverad |
NAMNOMRÅDEN | icke-reserverad | icke-reserverad | icke-reserverad |
NATURLIGA | Reserverade | strikt icke-reserverad | Reserverade |
NO | icke-reserverad | icke-reserverad | Reserverade |
NOT | Reserverade | icke-reserverad | Reserverade |
NULL | Reserverade | icke-reserverad | Reserverade |
NULL | icke-reserverad | icke-reserverad | icke-reserverad |
AV | icke-reserverad | icke-reserverad | Reserverade |
ON | Reserverade | strikt icke-reserverad | Reserverade |
BARA | Reserverade | icke-reserverad | Reserverade |
ALTERNATIVET | icke-reserverad | icke-reserverad | icke-reserverad |
ALTERNATIV | icke-reserverad | icke-reserverad | icke-reserverad |
ELLER | Reserverade | icke-reserverad | Reserverade |
ORDNING | Reserverade | icke-reserverad | Reserverade |
UT | icke-reserverad | icke-reserverad | Reserverade |
YTTRE | Reserverade | icke-reserverad | Reserverade |
OUTPUTFORMAT | icke-reserverad | icke-reserverad | icke-reserverad |
ÖVER | icke-reserverad | icke-reserverad | icke-reserverad |
ÖVERLAPPNINGAR | Reserverade | icke-reserverad | Reserverade |
OVERLAY | icke-reserverad | icke-reserverad | icke-reserverad |
SKRIV ÖVER | icke-reserverad | icke-reserverad | icke-reserverad |
PARTITION | icke-reserverad | icke-reserverad | Reserverade |
PARTITIONERAD | icke-reserverad | icke-reserverad | icke-reserverad |
PARTITIONER | icke-reserverad | icke-reserverad | icke-reserverad |
PROCENT | icke-reserverad | icke-reserverad | icke-reserverad |
PIVOT | icke-reserverad | icke-reserverad | icke-reserverad |
UTSLÄPPANDE | icke-reserverad | icke-reserverad | icke-reserverad |
POSITION | icke-reserverad | icke-reserverad | Reserverade |
FÖREGÅENDE | icke-reserverad | icke-reserverad | icke-reserverad |
PRIMÄRA | Reserverade | icke-reserverad | Reserverade |
HUVUDMÄN | icke-reserverad | icke-reserverad | icke-reserverad |
EGENSKAPER | icke-reserverad | icke-reserverad | icke-reserverad |
RENSA | icke-reserverad | icke-reserverad | icke-reserverad |
KVALIFICERA SIG | Reserverade | icke-reserverad | Reserverade |
FRÅGA | icke-reserverad | icke-reserverad | icke-reserverad |
UTBUD | icke-reserverad | icke-reserverad | Reserverade |
MOTTAGAREN | icke-reserverad | icke-reserverad | icke-reserverad |
MOTTAGARE | icke-reserverad | icke-reserverad | icke-reserverad |
RECORDREADER | icke-reserverad | icke-reserverad | icke-reserverad |
RECORDWRITER | icke-reserverad | icke-reserverad | icke-reserverad |
ÅTERSTÄLLA | icke-reserverad | icke-reserverad | icke-reserverad |
MINSKA | icke-reserverad | icke-reserverad | icke-reserverad |
REFERENSLISTA | Reserverade | icke-reserverad | Reserverade |
REFRESH | icke-reserverad | icke-reserverad | icke-reserverad |
REGEXP | icke-reserverad | icke-reserverad | inte ett nyckelord |
TA BORT | icke-reserverad | icke-reserverad | icke-reserverad |
RENAME | icke-reserverad | icke-reserverad | icke-reserverad |
REPARATION | icke-reserverad | icke-reserverad | icke-reserverad |
REPLACE | icke-reserverad | icke-reserverad | icke-reserverad |
RESET | icke-reserverad | icke-reserverad | icke-reserverad |
RESPEKT | icke-reserverad | icke-reserverad | icke-reserverad |
BEGRÄNSA | icke-reserverad | icke-reserverad | icke-reserverad |
REVOKE | icke-reserverad | icke-reserverad | Reserverade |
RIGHT | Reserverade | strikt icke-reserverad | Reserverade |
RLIKE | icke-reserverad | icke-reserverad | icke-reserverad |
ROLL | icke-reserverad | icke-reserverad | icke-reserverad |
ROLLER | icke-reserverad | icke-reserverad | icke-reserverad |
ROLLBACK | icke-reserverad | icke-reserverad | Reserverade |
ROLLUP | icke-reserverad | icke-reserverad | Reserverade |
ROW | icke-reserverad | icke-reserverad | Reserverade |
RADER | icke-reserverad | icke-reserverad | Reserverade |
SCHEMAT | icke-reserverad | icke-reserverad | icke-reserverad |
SCHEMAN | icke-reserverad | icke-reserverad | inte ett nyckelord |
SECOND | icke-reserverad | icke-reserverad | icke-reserverad |
SELECT | Reserverade | icke-reserverad | Reserverade |
SEMI | icke-reserverad | strikt icke-reserverad | icke-reserverad |
SEPARERADE | icke-reserverad | icke-reserverad | icke-reserverad |
SERDE | icke-reserverad | icke-reserverad | icke-reserverad |
SERDEPROPERTIES | icke-reserverad | icke-reserverad | icke-reserverad |
SESSION_USER | Reserverade | icke-reserverad | Reserverade |
SET | icke-reserverad | icke-reserverad | Reserverade |
UPPSÄTTNINGAR | icke-reserverad | icke-reserverad | icke-reserverad |
Dela | icke-reserverad | icke-reserverad | icke-reserverad |
AKTIER | icke-reserverad | icke-reserverad | icke-reserverad |
VISA | icke-reserverad | icke-reserverad | icke-reserverad |
SKEV | icke-reserverad | icke-reserverad | icke-reserverad |
NÅGRA | Reserverade | icke-reserverad | Reserverade |
SORTERA | icke-reserverad | icke-reserverad | icke-reserverad |
SORTERADE | icke-reserverad | icke-reserverad | icke-reserverad |
BÖRJA | icke-reserverad | icke-reserverad | Reserverade |
STATISTIK | icke-reserverad | icke-reserverad | icke-reserverad |
LAGRAS | icke-reserverad | icke-reserverad | icke-reserverad |
STRATIFY | icke-reserverad | icke-reserverad | icke-reserverad |
STRUCT | icke-reserverad | icke-reserverad | icke-reserverad |
SUBSTR | icke-reserverad | icke-reserverad | icke-reserverad |
SUBSTRING | icke-reserverad | icke-reserverad | icke-reserverad |
SYNC | icke-reserverad | icke-reserverad | icke-reserverad |
TABELL | Reserverade | icke-reserverad | Reserverade |
TABELLER | icke-reserverad | icke-reserverad | icke-reserverad |
TABLESAMPLE | icke-reserverad | icke-reserverad | Reserverade |
TBLPROPERTIES | icke-reserverad | icke-reserverad | icke-reserverad |
TEMP | icke-reserverad | icke-reserverad | inte ett nyckelord |
TILLFÄLLIGA | icke-reserverad | icke-reserverad | icke-reserverad |
AVSLUTAS | icke-reserverad | icke-reserverad | icke-reserverad |
SEDAN | Reserverade | icke-reserverad | Reserverade |
TIME | Reserverade | icke-reserverad | Reserverade |
TO | Reserverade | icke-reserverad | Reserverade |
TOUCH | icke-reserverad | icke-reserverad | icke-reserverad |
AVSLUTANDE | Reserverade | icke-reserverad | Reserverade |
TRANSAKTIONEN | icke-reserverad | icke-reserverad | icke-reserverad |
TRANSAKTIONER | icke-reserverad | icke-reserverad | icke-reserverad |
OMVANDLA | icke-reserverad | icke-reserverad | icke-reserverad |
TRIM | icke-reserverad | icke-reserverad | icke-reserverad |
TRUE | icke-reserverad | icke-reserverad | Reserverade |
TRUNCATE | icke-reserverad | icke-reserverad | Reserverade |
TRY_CAST | icke-reserverad | icke-reserverad | icke-reserverad |
TYP | icke-reserverad | icke-reserverad | icke-reserverad |
UNARCHIVE | icke-reserverad | icke-reserverad | icke-reserverad |
OBEGRÄNSAD | icke-reserverad | icke-reserverad | icke-reserverad |
UNCACHE | icke-reserverad | icke-reserverad | icke-reserverad |
UNION | Reserverade | strikt icke-reserverad | Reserverade |
UNIK | Reserverade | icke-reserverad | Reserverade |
UNKNOWN | Reserverade | icke-reserverad | Reserverade |
LÅSA UPP | icke-reserverad | icke-reserverad | icke-reserverad |
INAKTIVERA | icke-reserverad | icke-reserverad | icke-reserverad |
UPDATE | icke-reserverad | icke-reserverad | Reserverade |
USE | icke-reserverad | icke-reserverad | icke-reserverad |
USER | Reserverade | icke-reserverad | Reserverade |
ANVÄNDA | Reserverade | strikt icke-reserverad | Reserverade |
VALUES | icke-reserverad | icke-reserverad | Reserverade |
Visa | icke-reserverad | icke-reserverad | icke-reserverad |
VISNINGAR | icke-reserverad | icke-reserverad | icke-reserverad |
NÄR | Reserverade | icke-reserverad | Reserverade |
WHERE | Reserverade | icke-reserverad | Reserverade |
FÖNSTRET | icke-reserverad | icke-reserverad | Reserverade |
WITH | Reserverade | icke-reserverad | Reserverade |
YEAR | icke-reserverad | icke-reserverad | icke-reserverad |
ZON | icke-reserverad | icke-reserverad | icke-reserverad |