ANSI-efterlevnad i Databricks Runtime

Gäller för:check marked yes Databricks Runtime

I den här artikeln beskrivs ANSI-efterlevnad i Databricks Runtime. Information om ANSI-läge i Databricks SQL finns i ANSI_MODE.

Spark SQL har två alternativ för att stödja efterlevnad med ANSI SQL-standarden: spark.sql.ansi.enabled och spark.sql.storeAssignmentPolicy.

När spark.sql.ansi.enabled är inställt på trueanvänder Spark SQL en ANSI-kompatibel dialekt i stället för att vara Hive-kompatibel. Spark utlöser 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:s formatmall.

Dessutom har Spark SQL ett oberoende alternativ för att styra implicita gjutningsbeteenden vid lagring av rader i en tabell. Gjutningsbeteendena definieras som lagringstilldelningsregler i standarden.

När spark.sql.storeAssignmentPolicy är inställt på ANSIfö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:

Egenskapsnamn Standardvärde Innebörd
spark.sql.ansi.enabled falskt När det är sant försöker Spark följa ANSI SQL-specifikationen:

* Utlöser 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 lagrar ett värde i en kolumn med en annan datatyp utför Spark typkonvertering. Det finns tre principer för typtvångsregler: ANSI, legacyoch 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 boolesk.
* legacy: Spark tillåter typtvång så länge det är en giltig Cast, som är mycket lös. Du kan till exempel konvertera strängen 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äget ä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 aritmetiska åtgärder som utförs på numeriska typer (med undantag för decimaltecken) inte för spill som standard. Det innebär att om en åtgärd orsakar spill blir resultatet detsamma med motsvarande åtgärd i ett Java- eller Scala-program (om summan av två heltal är högre än det maximala värde som kan representeras blir 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 utlöser 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

Cast

När spark.sql.ansi.enabled är inställt på truegenererar explicit gjutning efter CAST syntax ett körningsundantag för ogiltiga 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 den 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 String Datum Tidsstämpel Intervall Booleskt Binära Matris Mappning Struct-datatyp
Numerisk 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
Tidsstämpel N Y Y Y N N N N N N
Intervall N Y N N Y N N N N N
Booleskt Y Y N N N Y N N N N
Binära Y N N N N N Y N N N
Matris N N N N N N N Y N N
Mappning 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: [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

Lagringstilldelning

spark.sql.storeAssignmentPolicy Inställningen är ANSIsom standard . Med den här inställningen, när datatyperna för källvärden inte matchar målkolumntyperna, lägger Spark SQL automatiskt till ANSI CAST-satser i INSERT-instruktionen. Under tabellinfogning under den här principen söker Spark efter och avvisar ogiltiga avgjutningar, vilket utlöser ett undantag för att säkerställa datakvaliteten. Det innebär att om ett infogningsförsök misslyckas på grund av ett typmatchningsfel resulterar det inte i att några data delvis skrivs till tabellen.

Exempel:

-- 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

De här exemplen visar att Spark SQL förhindrar att inkompatibla data infogas, vilket upprätthåller dataintegriteten.

spark.sql.storeAssignmentPolicy När är inställt på LEGACYåtergår Spark SQL till det beteende som är vanligt upp till Spark 2.x. I det här läget tillämpas äldre CAST-åtgärder i stället för ANSI CAST. Under den här principen resulterar ogiltiga avgjutningar under tabellinfogningar i antingen NULL-värden eller felaktiga värden som infogas, i stället för att utlösa ett undantag. Exempel:

-- 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)

Typtvång

Typhöjning och prioritet

När spark.sql.ansi.enabled är inställt på trueanvänder Spark SQL flera regler som styr hur konflikter mellan datatyper löses. Kärnan i den här konfliktlösningen är typprioritetens lista som definierar om värden för en viss datatyp kan höjas upp till en annan datatyp implicit.

Datatyp prioritetslista (från smalast till bredast)
Byte Byte -> Kort -> Int -> Long - Decimal ->> Float* -> Double
Kort Kort -> Int -> Long -> Decimal-> Float* -> Double
Int Int -> Long - Decimal ->> Float* -> Double
Long Long -> Decimal -> Float* -> Double
Decimal Decimal -> Float* -> Double
Flyttal Flyttal –> dubbel
Dubbel Dubbel
Datum Datum –> tidsstämpel
Tidsstämpel Tidsstämpel
String String
Binära Binära
Booleskt Booleskt
Intervall Intervall
Mappning 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 otypad 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 skildring av prioritetslistan som ett riktat träd: Graphical representation of precedence rules

Minsta vanliga typmatchning

Den minsta 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 typupplösningen 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. Om någon av typerna är INT, BIGINT eller DECIMAL skickas 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 i 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.
  • elt: Den här funktionen genererar ArrayIndexOutOfBoundsException 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 genererar IllegalArgumentException om indata inte är en giltig veckodag.
  • parse_url: Den här funktionen utlöser IllegalArgumentException 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 i ANSI-läge (spark.sql.ansi.enabled=true).

  • array_col[index]: Den här operatorn genererar ArrayIndexOutOfBoundsException om ogiltiga index används.
  • map_col[key]: Den här operatorn genererar NoSuchElementException 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 med CAST, förutom att det returnerar NULL resultat i stället för att utlösa ett undantag vid körningsfel.
  • try_add: identisk med add-operatorn +, förutom att den returnerar NULL resultat i stället för att utlösa ett undantag vid spill av integralvärde.
  • try_divide: identisk med divisionsoperatorn /, förutom att den returnerar NULL resultat i stället för att utlösa ett undantag vid delning 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 endast har en särskild betydelse i vissa kontexter och som kan användas som identifierare i andra sammanhang. Till exempel EXPLAIN SELECT ... är 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 false.

Nedan visas en lista över alla nyckelord i Spark SQL.

Nyckelord Spark SQL ANSI-läge Standardläge för Spark SQL SQL-2016
LÄGG TILL ej reserverad ej reserverad ej reserverad
EFTER ej reserverad ej reserverad ej reserverad
ALL Reserverade ej reserverad Reserverade
ÄNDRA ej reserverad ej reserverad Reserverade
ALLTID ej reserverad ej reserverad ej reserverad
ANALYSERA ej reserverad ej reserverad ej reserverad
OCH Reserverade ej reserverad Reserverade
ANTI ej reserverad strikt icke-reserverad ej reserverad
NÅGON Reserverade ej reserverad Reserverade
ARKIV ej reserverad ej reserverad ej reserverad
ARRAY ej reserverad ej reserverad Reserverade
AS Reserverade ej reserverad Reserverade
ASC ej reserverad ej reserverad ej reserverad
AT ej reserverad ej reserverad Reserverade
TILLSTÅND Reserverade ej reserverad Reserverade
BETWEEN ej reserverad ej reserverad Reserverade
BÅDE Reserverade ej reserverad Reserverade
HINK ej reserverad ej reserverad ej reserverad
HINKAR ej reserverad ej reserverad ej reserverad
BY ej reserverad ej reserverad Reserverade
CACHE ej reserverad ej reserverad ej reserverad
CASCADE ej reserverad ej reserverad ej reserverad
CASE Reserverade ej reserverad Reserverade
CAST Reserverade ej reserverad Reserverade
ÄNDRA ej reserverad ej reserverad ej reserverad
KONTROLLERA Reserverade ej reserverad Reserverade
TYDLIG ej reserverad ej reserverad ej reserverad
KLUSTER ej reserverad ej reserverad ej reserverad
KLUSTRADE ej reserverad ej reserverad ej reserverad
CODEGEN ej reserverad ej reserverad ej reserverad
SORTERA Reserverade ej reserverad Reserverade
SAMLING ej reserverad ej reserverad ej reserverad
KOLUMN Reserverade ej reserverad Reserverade
KOLUMNER ej reserverad ej reserverad ej reserverad
COMMENT ej reserverad ej reserverad ej reserverad
BEGÅ ej reserverad ej reserverad Reserverade
KOMPAKT ej reserverad ej reserverad ej reserverad
KOMPRIMERING ej reserverad ej reserverad ej reserverad
DATABEARBETNING ej reserverad ej reserverad ej reserverad
SAMMANFOGA ej reserverad ej reserverad ej reserverad
BEGRÄNSNING Reserverade ej reserverad Reserverade
KOSTNAD ej reserverad ej reserverad ej reserverad
CREATE Reserverade ej reserverad Reserverade
CROSS Reserverade strikt icke-reserverad Reserverade
KUB ej reserverad ej reserverad Reserverade
NUVARANDE ej reserverad ej reserverad Reserverade
CURRENT_DATE Reserverade ej reserverad Reserverade
CURRENT_TIME Reserverade ej reserverad Reserverade
CURRENT_TIMESTAMP Reserverade ej reserverad Reserverade
CURRENT_USER Reserverade ej reserverad Reserverade
DATA ej reserverad ej reserverad ej reserverad
DATABASE ej reserverad ej reserverad ej reserverad
DATABASER ej reserverad ej reserverad ej reserverad
DAY ej reserverad ej reserverad ej reserverad
DBPROPERTIES ej reserverad ej reserverad ej reserverad
DEFINIERAS ej reserverad ej reserverad ej reserverad
DELETE ej reserverad ej reserverad Reserverade
AVGRÄNSADE ej reserverad ej reserverad ej reserverad
DESC ej reserverad ej reserverad ej reserverad
BESKRIVA ej reserverad ej reserverad Reserverade
DFS ej reserverad ej reserverad ej reserverad
KATALOGER ej reserverad ej reserverad ej reserverad
KATALOG ej reserverad ej reserverad ej reserverad
DISTINKTA Reserverade ej reserverad Reserverade
DISTRIBUERA ej reserverad ej reserverad ej reserverad
DIV ej reserverad ej reserverad inte ett nyckelord
DROP ej reserverad ej reserverad Reserverade
ANNAT Reserverade ej reserverad Reserverade
SLUTET Reserverade ej reserverad Reserverade
FLY Reserverade ej reserverad Reserverade
FLYDDE ej reserverad ej reserverad ej reserverad
UTOM Reserverade strikt icke-reserverad Reserverade
EXCHANGE ej reserverad ej reserverad ej reserverad
FINNS ej reserverad ej reserverad Reserverade
EXPLAIN ej reserverad ej reserverad ej reserverad
EXPORTERA ej reserverad ej reserverad ej reserverad
TOTALPRIS ej reserverad ej reserverad ej reserverad
EXTERNA ej reserverad ej reserverad Reserverade
EXTRACT ej reserverad ej reserverad Reserverade
Falskt Reserverade ej reserverad Reserverade
HÄMTA Reserverade ej reserverad Reserverade
FÄLT ej reserverad ej reserverad ej reserverad
FILTRERA Reserverade ej reserverad Reserverade
FILFORMAT ej reserverad ej reserverad ej reserverad
FIRST ej reserverad ej reserverad ej reserverad
FN ej reserverad ej reserverad ej reserverad
FÖLJANDE ej reserverad ej reserverad ej reserverad
FÖR Reserverade ej reserverad Reserverade
UTLÄNDSKA Reserverade ej reserverad Reserverade
FORMAT ej reserverad ej reserverad ej reserverad
FORMATERAD ej reserverad ej reserverad ej reserverad
FROM Reserverade ej reserverad Reserverade
FULL Reserverade strikt icke-reserverad Reserverade
FUNKTION ej reserverad ej reserverad Reserverade
FUNKTIONER ej reserverad ej reserverad ej reserverad
GENERERAS ej reserverad ej reserverad ej reserverad
GLOBALT ej reserverad ej reserverad Reserverade
GRANT Reserverade ej reserverad Reserverade
BIDRAG ej reserverad ej reserverad ej reserverad
GRUPP Reserverade ej reserverad Reserverade
GRUPPERING ej reserverad ej reserverad Reserverade
HAVING Reserverade ej reserverad Reserverade
HOUR ej reserverad ej reserverad ej reserverad
IF ej reserverad ej reserverad inte ett nyckelord
IGNORE ej reserverad ej reserverad ej reserverad
IMPORTERA ej reserverad ej reserverad ej reserverad
IN Reserverade ej reserverad Reserverade
INDEX ej reserverad ej reserverad ej reserverad
INDEX ej reserverad ej reserverad ej reserverad
INRE Reserverade strikt icke-reserverad Reserverade
INPATH ej reserverad ej reserverad ej reserverad
INPUTFORMAT ej reserverad ej reserverad ej reserverad
INSERT ej reserverad ej reserverad Reserverade
INTERSECT Reserverade strikt icke-reserverad Reserverade
INTERVALL ej reserverad ej reserverad Reserverade
INTO Reserverade ej reserverad Reserverade
IS Reserverade ej reserverad Reserverade
OBJEKT ej reserverad ej reserverad ej reserverad
JOIN Reserverade strikt icke-reserverad Reserverade
NYCKEL ej reserverad ej reserverad ej reserverad
NYCKLAR ej reserverad ej reserverad ej reserverad
LAST ej reserverad ej reserverad ej reserverad
LATERALA Reserverade strikt icke-reserverad Reserverade
LATA ej reserverad ej reserverad ej reserverad
LEDANDE Reserverade ej reserverad Reserverade
LEFT Reserverade strikt icke-reserverad Reserverade
LIKE ej reserverad ej reserverad Reserverade
ILIKE ej reserverad ej reserverad ej reserverad
GRÄNS ej reserverad ej reserverad ej reserverad
LINJER ej reserverad ej reserverad ej reserverad
LISTA ej reserverad ej reserverad ej reserverad
LADDA ej reserverad ej reserverad ej reserverad
LOKAL ej reserverad ej reserverad Reserverade
PLATS ej reserverad ej reserverad ej reserverad
LÅSA ej reserverad ej reserverad ej reserverad
LÅS ej reserverad ej reserverad ej reserverad
LOGISKA ej reserverad ej reserverad ej reserverad
MAKRO ej reserverad ej reserverad ej reserverad
KARTA ej reserverad ej reserverad ej reserverad
MATCHADE ej reserverad ej reserverad ej reserverad
SAMMANFOGA ej reserverad ej reserverad ej reserverad
MINUTE ej reserverad ej reserverad ej reserverad
MINUS ej reserverad strikt icke-reserverad ej reserverad
MONTH ej reserverad ej reserverad ej reserverad
MSCK ej reserverad ej reserverad ej reserverad
NAMNOMRÅDE ej reserverad ej reserverad ej reserverad
NAMNOMRÅDEN ej reserverad ej reserverad ej reserverad
NATURLIGA Reserverade strikt icke-reserverad Reserverade
NEJ ej reserverad ej reserverad Reserverade
NOT Reserverade ej reserverad Reserverade
NULL Reserverade ej reserverad Reserverade
NULL ej reserverad ej reserverad ej reserverad
AV ej reserverad ej reserverad Reserverade
ON Reserverade strikt icke-reserverad Reserverade
BARA Reserverade ej reserverad Reserverade
OPTION ej reserverad ej reserverad ej reserverad
ALTERNATIV ej reserverad ej reserverad ej reserverad
ELLER Reserverade ej reserverad Reserverade
ORDNING Reserverade ej reserverad Reserverade
UT ej reserverad ej reserverad Reserverade
YTTRE Reserverade ej reserverad Reserverade
UTDATAFORMAT ej reserverad ej reserverad ej reserverad
ÖVER ej reserverad ej reserverad ej reserverad
ÖVERLAPPNINGAR Reserverade ej reserverad Reserverade
OVERLAY ej reserverad ej reserverad ej reserverad
SKRIV ÖVER ej reserverad ej reserverad ej reserverad
PARTITION ej reserverad ej reserverad Reserverade
PARTITIONERAD ej reserverad ej reserverad ej reserverad
PARTITIONER ej reserverad ej reserverad ej reserverad
PROCENT ej reserverad ej reserverad ej reserverad
PIVOT ej reserverad ej reserverad ej reserverad
UTSLÄPPANDE ej reserverad ej reserverad ej reserverad
POSITION ej reserverad ej reserverad Reserverade
FÖREGÅENDE ej reserverad ej reserverad ej reserverad
PRIMÄR Reserverade ej reserverad Reserverade
HUVUDMÄN ej reserverad ej reserverad ej reserverad
EGENSKAPER ej reserverad ej reserverad ej reserverad
RENSA ej reserverad ej reserverad ej reserverad
KVALIFICERA SIG Reserverade ej reserverad Reserverade
FRÅGA ej reserverad ej reserverad ej reserverad
UTBUD ej reserverad ej reserverad Reserverade
MOTTAGAREN ej reserverad ej reserverad ej reserverad
MOTTAGARE ej reserverad ej reserverad ej reserverad
RECORDREADER ej reserverad ej reserverad ej reserverad
RECORDWRITER ej reserverad ej reserverad ej reserverad
ÅTERSTÄLLA ej reserverad ej reserverad ej reserverad
MINSKA ej reserverad ej reserverad ej reserverad
REFERENSER Reserverade ej reserverad Reserverade
REFRESH ej reserverad ej reserverad ej reserverad
REGEXP ej reserverad ej reserverad inte ett nyckelord
TA BORT ej reserverad ej reserverad ej reserverad
RENAME ej reserverad ej reserverad ej reserverad
REPARATION ej reserverad ej reserverad ej reserverad
REPLACE ej reserverad ej reserverad ej reserverad
RESET ej reserverad ej reserverad ej reserverad
RESPEKT ej reserverad ej reserverad ej reserverad
BEGRÄNSA ej reserverad ej reserverad ej reserverad
REVOKE ej reserverad ej reserverad Reserverade
RIGHT Reserverade strikt icke-reserverad Reserverade
RLIKE ej reserverad ej reserverad ej reserverad
ROLL ej reserverad ej reserverad ej reserverad
ROLLER ej reserverad ej reserverad ej reserverad
ROLLBACK ej reserverad ej reserverad Reserverade
SAMLAD ej reserverad ej reserverad Reserverade
RAD ej reserverad ej reserverad Reserverade
RADER ej reserverad ej reserverad Reserverade
SCHEMA ej reserverad ej reserverad ej reserverad
SCHEMAN ej reserverad ej reserverad inte ett nyckelord
SECOND ej reserverad ej reserverad ej reserverad
SELECT Reserverade ej reserverad Reserverade
SEMI ej reserverad strikt icke-reserverad ej reserverad
SEPARERADE ej reserverad ej reserverad ej reserverad
SERDE ej reserverad ej reserverad ej reserverad
SERDEPROPERTIES ej reserverad ej reserverad ej reserverad
SESSION_USER Reserverade ej reserverad Reserverade
SET ej reserverad ej reserverad Reserverade
UPPSÄTTNINGAR ej reserverad ej reserverad ej reserverad
DELA ej reserverad ej reserverad ej reserverad
AKTIER ej reserverad ej reserverad ej reserverad
VISA ej reserverad ej reserverad ej reserverad
SKEV ej reserverad ej reserverad ej reserverad
NÅGRA Reserverade ej reserverad Reserverade
SORTERA ej reserverad ej reserverad ej reserverad
SORTERADE ej reserverad ej reserverad ej reserverad
STARTA ej reserverad ej reserverad Reserverade
STATISTIK ej reserverad ej reserverad ej reserverad
LAGRAS ej reserverad ej reserverad ej reserverad
STRATIFY ej reserverad ej reserverad ej reserverad
STRUCT ej reserverad ej reserverad ej reserverad
SUBSTR ej reserverad ej reserverad ej reserverad
SUBSTRING ej reserverad ej reserverad ej reserverad
SYNC ej reserverad ej reserverad ej reserverad
TABELL Reserverade ej reserverad Reserverade
TABELLER ej reserverad ej reserverad ej reserverad
TABLESAMPLE ej reserverad ej reserverad Reserverade
TBLPROPERTIES ej reserverad ej reserverad ej reserverad
TEMP ej reserverad ej reserverad inte ett nyckelord
TILLFÄLLIGA ej reserverad ej reserverad ej reserverad
AVSLUTAS ej reserverad ej reserverad ej reserverad
SEDAN Reserverade ej reserverad Reserverade
TID Reserverade ej reserverad Reserverade
TO Reserverade ej reserverad Reserverade
TOUCH ej reserverad ej reserverad ej reserverad
AVSLUTANDE Reserverade ej reserverad Reserverade
TRANSAKTION ej reserverad ej reserverad ej reserverad
TRANSAKTIONER ej reserverad ej reserverad ej reserverad
OMVANDLA ej reserverad ej reserverad ej reserverad
TRIM ej reserverad ej reserverad ej reserverad
Sant ej reserverad ej reserverad Reserverade
TRUNCATE ej reserverad ej reserverad Reserverade
TRY_CAST ej reserverad ej reserverad ej reserverad
TYP ej reserverad ej reserverad ej reserverad
UNARCHIVE ej reserverad ej reserverad ej reserverad
OBEGRÄNSAD ej reserverad ej reserverad ej reserverad
UNCACHE ej reserverad ej reserverad ej reserverad
UNION Reserverade strikt icke-reserverad Reserverade
UNIK Reserverade ej reserverad Reserverade
OKÄND Reserverade ej reserverad Reserverade
LÅSA UPP ej reserverad ej reserverad ej reserverad
INAKTIVERA ej reserverad ej reserverad ej reserverad
UPDATE ej reserverad ej reserverad Reserverade
USE ej reserverad ej reserverad ej reserverad
USER Reserverade ej reserverad Reserverade
ANVÄNDA Reserverade strikt icke-reserverad Reserverade
VÄRDEN ej reserverad ej reserverad Reserverade
VISA ej reserverad ej reserverad ej reserverad
VISNINGAR ej reserverad ej reserverad ej reserverad
När… Reserverade ej reserverad Reserverade
WHERE Reserverade ej reserverad Reserverade
FÖNSTRET ej reserverad ej reserverad Reserverade
WITH Reserverade ej reserverad Reserverade
YEAR ej reserverad ej reserverad ej reserverad
ZON ej reserverad ej reserverad ej reserverad