Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime
In diesem Artikel wird die ANSI-Konformität in Databricks Runtime beschrieben. Informationen zum ANSI-Modus in Databricks SQL finden Sie unter ANSI_MODE.
Spark SQL bietet zwei Optionen zur Unterstützung der Kompatibilität mit dem ANSI-SQL-Standard: spark.sql.ansi.enabled und spark.sql.storeAssignmentPolicy.
spark.sql.ansi.enabled(ANSI-Modus)- Verwendet einen ANSI-kompatiblen SQL-Dialekt anstelle des hivekompatiblen Dialekts.
- Löst Laufzeit-Ausnahmen für ungültige Eingaben aus, anstatt NULL zurückzugeben.
- Standardmäßig in Apache Spark 4.0 und Databricks Runtime 17.0 und höher aktiviert.
spark.sql.storeAssignmentPolicy(Speicher-Zuweisungsrichtlinie)- Steuert die implizite Umwandlung bei Tabelleneinfügungen.
- Standardwert ist
ANSIund ist unabhängig vonspark.sql.ansi.enabled.
In der folgenden Tabelle wird das Verhalten zusammengefasst:
| Eigenschaftenname | Standard | Bedeutung |
|---|---|---|
spark.sql.ansi.enabled |
Wahr | Wenn true, versucht Spark, die ANSI SQL-Spezifikation zu erfüllen:
|
spark.sql.storeAssignmentPolicy |
ANSI (Amerikanisches Institut für Normung) | Beim Speichern eines Werts in einer Spalte mit einem anderen Datentyp führt Spark eine Typkonvertierung durch. Es gibt drei Richtlinien für die Typumwandlungsregeln: ANSI, legacy und strict.
|
In den folgenden Unterabschnitten werden die Verhaltensänderungen bei arithmetischen Operationen, Typkonvertierungen und der SQL-Analyse bei aktiviertem ANSI-Modus aufgezeigt. In Bezug auf Typkonvertierungen in Spark SQL gibt es drei Arten, die in diesem Artikel einzeln vorgestellt werden: Umwandlung, Speicherzuweisung und Typkoersion.
Arithmetische Operationen
In Spark SQL werden arithmetische Operationen für numerische Typen (mit Ausnahme von „Decimal“) standardmäßig nicht auf Überläufe überprüft.
Das heißt, wenn eine Operation Überläufe verursacht, ist das Ergebnis dasselbe wie bei der entsprechenden Operation in einem Java- oder Scala-Programm (wenn z. B. die Summe von zwei ganzen Zahlen höher ist als der maximal darstellbare Wert, ist das Ergebnis eine negative Zahl). Andererseits gibt Spark SQL bei Dezimalüberläufen NULL zurück.
Wenn spark.sql.ansi.enabled auf true festgelegt ist und ein Überlauf bei numerischen und Intervallarithmetikoperationen auftritt, wird zur Laufzeit eine arithmetische Ausnahme ausgelöst.
-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
error: integer overflow
-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
-2147483648
Umwandeln
Wenn spark.sql.ansi.enabled auf true festgelegt ist, löst die explizite Umwandlung durch die CAST-Syntax eine Laufzeitausnahme für ungültige Umwandlungsmuster aus, die im Standard definiert sind, z. B. Umwandlungen von einer Zeichenfolge in eine ganze Zahl.
Die CAST-Klausel des Spark-ANSI-Modus folgt den Syntaxregeln von Abschnitt 6.13 „Umwandlungsspezifikation“ in ISO/IEC 9075-2:2011 Information technology — Database languages — SQL — Part 2: Foundation (SQL/Foundation), mit der Ausnahme, dass sie speziell die folgenden einfachen Typkonvertierungen zulässt, die gemäß dem ANSI-Standard nicht zulässig sind:
- Zahlentyp <=> BoolescherTyp
- StringTyp <=> BinärTyp
Die gültigen Kombinationen aus Quell- und Zieldatentyp in einem CAST-Ausdruck sind in der folgenden Tabelle aufgeführt.
„J“ gibt an, dass die Kombination syntaktisch ohne Einschränkung gültig ist, und „N“ gibt an, dass die Kombination ungültig ist.
| SourceTarget | Numerisch | Schnur | Datum | Zeitstempel | Intervall | Boolescher Typ (Boolean) | Binär | Anordnung | Landkarte | Struktur |
|---|---|---|---|---|---|---|---|---|---|---|
| Numerisch | J | J | N | N | N | J | N | N | N | N |
| Schnur | J | J | J | J | J | J | J | N | N | N |
| Datum | N | J | J | J | N | N | N | N | N | N |
| Zeitstempel | N | J | J | J | N | N | N | N | N | N |
| Intervall | N | J | N | N | J | N | N | N | N | N |
| Boolescher Typ (Boolean) | J | J | N | N | N | J | N | N | N | N |
| Binär | J | N | N | N | N | N | J | N | N | N |
| Anordnung | N | N | N | N | N | N | N | J | N | N |
| Landkarte | N | N | N | N | N | N | N | N | J | N |
| Struktur | N | N | N | N | N | N | N | N | N | J |
-- 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`
> SELECT cast('a' AS INT);
null
> SELECT CAST(2147483648L AS INT);
-2147483648
> SELECT CAST(DATE'2020-01-01' AS INT);
null
Speicherzuweisung
Die Einstellung spark.sql.storeAssignmentPolicy standardmäßig auf ANSI festgelegt. Wenn die Datentypen von Quellwerten mit dieser Einstellung nicht mit den Zielspaltentypen übereinstimmen, fügt Spark SQL der SQL-Anweisung INSERT automatisch ANSI CAST-Klauseln hinzu.
Während der Tabelleneinfügung prüft und lehnt Spark durch diese Richtlinie ungültige Umwandlungen ab und löst eine Ausnahme aus, um die Datenqualität sicherzustellen. Wenn das Einfügen aufgrund eines Typkonflikts fehlschlägt, werden somit keine Daten teilweise in die Tabelle geschrieben.
Beispiele:
-- 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
Diese Beispiele zeigen, dass Spark SQL verhindert, dass inkompatible Daten eingefügt werden, wodurch die Datenintegrität sichergestellt wird.
Wenn spark.sql.storeAssignmentPolicy auf LEGACY festgelegt ist, greift Spark SQL auf das Verhalten zurück, das bis zu Spark 2.x bestand. In diesem Fall verwendet es anstelle von ANSI CAST ältere CAST-Vorgänge. Mit dieser Richtlinie führen ungültige Umwandlungen während der Tabelleneinfügung dazu, dass entweder NULL-Werte oder falsche Werte eingefügt werden, anstatt eine Ausnahme zu auslösen.
Beispiele:
-- 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)
Typumwandlung
Typerweiterung und Rangfolge von Typen
Wenn spark.sql.ansi.enabled auf true festgelegt ist, verwendet Spark SQL mehrere Regeln, die steuern, wie Konflikte zwischen Datentypen gelöst werden.
Das Kernstück dieser Konfliktlösung ist die Typenrangfolgeliste, die definiert, ob Werte eines bestimmten Datentyps implizit auf einen anderen Datentyp heraufgestuft/erweitert werden können.
| Datentyp | Rangfolgeliste (vom niedrigsten zum höchsten Typ) |
|---|---|
| Byte | Byte - Short ->> Int -> Long -> Decimal -> Float* -> Double |
| Schnellstart | Short - Int ->> Long -> Decimal -> Float* -> Double |
| Integer | Int - Long ->> Decimal -> Float* -> Double |
| Lang | Long -> Dezimal -> Float* -> Double |
| Dezimalzahl | Dezimal -> Gleitkommazahl* -> Doppel |
| Schweben | Float -> Double |
| Doppelt | Doppelt |
| Datum | Datum -> Zeitstempel |
| Zeitstempel | Zeitstempel |
| Schnur | Schnur |
| Binär | Binär |
| Boolescher Typ (Boolean) | Boolescher Typ (Boolean) |
| Intervall | Intervall |
| Landkarte | Zuordnung** |
| Anordnung | Anordnung** |
| Struktur | Struktur** |
- Bei der Auflösung des kleinsten gemeinsamen Typs wird „Float“ übersprungen, um Genauigkeitsverluste zu vermeiden.
** Bei einem komplexen Typ wird die Rangfolgeregel rekursiv auf die zugehörigen Komponentenelemente angewendet.
Spezielle Regeln gelten für den Typ „String“ und den nicht typisierten NULL-Wert. Ein NULL-Wert kann auf jeden anderen Typ heraufgestuft werden, und „String“ kann auf jeden einfachen Datentyp heraufgestuft werden.
Hier sehen Sie eine grafische Darstellung der Rangfolgeliste in Form eines gerichteten Baums: 
Auflösung des kleinsten gemeinsamen Typs
Der kleinste gemeinsame Typ aus einer Reihe von Typen ist der niedrigste Typ, der aus der Rangfolgeliste von allen Elementen der Reihe von Typen erreicht werden kann.
Die Auflösung des kleinsten gemeinsamen Typs wird für Folgendes verwendet:
- Entscheiden, ob eine Funktion, die einen Parameter eines Typs erwartet, mit einem Argument eines niedrigeren Typs aufgerufen werden kann.
- Ableiten des Argumenttyps für Funktionen, die einen gemeinsamen Argumenttyp für mehrere Parameter erwarten, z. B. COALESCE, LEAST oder GREATEST.
- Ableiten der Operandentypen für Operatoren wie z. B. arithmetische Operationen oder Vergleiche.
- Ableiten des Ergebnistyps für Ausdrücke wie den CASE-Ausdruck.
- Ableiten der Element-, Schlüssel- oder Werttypen für Array- und Map-Konstruktoren.
Spezielle Regeln werden angewendet, wenn der kleinste gemeinsame Typ in FLOAT aufgelöst wird. Wenn bei Werten vom Typ „Float“ einer der Typen INT, BIGINT oder DECIMAL ist, wird der kleinste gemeinsame Typ zu DOUBLE erweitert, um einen potenziellen Verlust von Ziffern zu vermeiden.
-- 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-Funktionen
Das Verhalten einiger SQL-Funktionen kann im ANSI-Modus (spark.sql.ansi.enabled=true) anders ausfallen.
-
size: Diese Funktion gibt bei Null-Eingaben im ANSI-Modus NULL zurück. -
element_at:- Diese Funktion löst
ArrayIndexOutOfBoundsExceptionaus, wenn ungültige Indizes verwendet werden. - Diese Funktion löst
NoSuchElementExceptionaus, wenn der Schlüssel in der Zuordnung nicht vorhanden ist.
- Diese Funktion löst
-
elt: Diese Funktion löstArrayIndexOutOfBoundsExceptionaus, wenn ungültige Indizes verwendet werden. -
make_date: Diese Funktion schlägt mit einer Ausnahme fehl, wenn das resultierende Datum ungültig ist. -
make_timestamp: Diese Funktion schlägt mit einer Ausnahme fehl, wenn der resultierende Zeitstempel ungültig ist. -
make_interval: Diese Funktion schlägt mit einer Ausnahme fehl, wenn das resultierende Intervall ungültig ist. -
next_day: Diese Funktion löstIllegalArgumentExceptionaus, wenn die Eingabe kein gültiger Wochentag ist. -
parse_url: Diese Funktion löstIllegalArgumentExceptionaus, wenn die Eingabezeichenfolge keine gültige URL ist. -
to_date: Diese Funktion schlägt mit einer Ausnahme fehl, wenn die Eingabezeichenfolge nicht analysiert werden kann oder die Musterzeichenfolge ungültig ist. -
to_timestamp: Diese Funktion schlägt mit einer Ausnahme fehl, wenn die Eingabezeichenfolge nicht analysiert werden kann oder die Musterzeichenfolge ungültig ist. -
to_unix_timestamp: Diese Funktion schlägt mit einer Ausnahme fehl, wenn die Eingabezeichenfolge nicht analysiert werden kann oder die Musterzeichenfolge ungültig ist. -
unix_timestamp: Diese Funktion schlägt mit einer Ausnahme fehl, wenn die Eingabezeichenfolge nicht analysiert werden kann oder die Musterzeichenfolge ungültig ist.
SQL-Operatoren
Das Verhalten einiger SQL-Operatoren kann im ANSI-Modus (spark.sql.ansi.enabled=true) anders ausfallen.
-
array_col[index]: Dieser Operator löstArrayIndexOutOfBoundsExceptionaus, wenn ungültige Indizes verwendet werden. -
map_col[key]: Dieser Operator löstNoSuchElementExceptionaus, wenn der Schlüssel in der Zuordnung nicht vorhanden ist. -
CAST(string_col AS TIMESTAMP): Dieser Operator schlägt mit einer Ausnahme fehl, wenn die Eingabezeichenfolge nicht analysiert werden kann. -
CAST(string_col AS DATE): Dieser Operator schlägt mit einer Ausnahme fehl, wenn die Eingabezeichenfolge nicht analysiert werden kann.
Nützliche Funktionen für den ANSI-Modus
Wenn der ANSI-Modus aktiviert ist, werden Ausnahmen für ungültige Operationen ausgelöst. Sie können die folgenden SQL-Funktionen verwenden, um solche Ausnahmen zu unterdrücken.
-
try_cast: Diese Funktion ist mitCASTidentisch, außer dass sie das ErgebnisNULLzurückgibt, statt bei Laufzeitfehlern eine Ausnahme auszulösen. -
try_add: Diese Funktion ist mit dem Additionsoperator (+) identisch, außer dass sie das ErgebnisNULLzurückgibt, statt bei einem Ganzzahlüberlauf eine Ausnahme auszulösen. -
try_divide: Diese Funktion ist mit dem Divisionsoperator (/) identisch, außer dass sie das ErgebnisNULLzurückgibt, statt bei einer Division durch Null (0) eine Ausnahme auszulösen.
SQL-Schlüsselwörter
Wenn sowohl spark.sql.ansi.enabled=true als auch spark.sql.ansi.enforceReservedKeywords=true verwendet werden, nutzt Spark SQL den ANSI-Parser.
spark.sql.ansi.enforceReservedKeywords ist standardmäßig false.
Im ANSI-Parsermodus fallen Schlüsselwörter in zwei Kategorien:
- Reserviert: Kann nicht als Bezeichner verwendet werden (Tabelle, Ansicht, Spalte, Funktion, Alias usw.).
- Nicht reserviert: Nur in bestimmten Kontexten als Schlüsselwörter genutzt; andernfalls können sie als Bezeichner genutzt werden. Beispielsweise ist
EXPLAIN SELECT ...ein Befehl, aberEXPLAINkann an anderer Stelle als Bezeichner verwendet werden.
Wenn der ANSI-Parser nicht verwendet wird, fallen Schlüsselwörter in:
- Nicht reserviert: Gleiche Definition wie oben.
- Strict-non-reserved: Ähnlich wie nicht reserviert, kann aber nicht als Tabellenalias verwendet werden.
Im Folgenden finden Sie eine Liste aller Schlüsselwörter in Spark SQL.
| Schlüsselwort | Spark SQL-ANSI-Modus | Spark SQL-Standardmodus | SQL-2016 |
|---|---|---|---|
| HINZUFÜGEN | nicht reserviert | nicht reserviert | nicht reserviert |
| NACH | nicht reserviert | nicht reserviert | nicht reserviert |
| ALLE | reserviert | nicht reserviert | reserviert |
| ÄNDERN | nicht reserviert | nicht reserviert | reserviert |
| IMMER | nicht reserviert | nicht reserviert | nicht reserviert |
| ANALYSIEREN | nicht reserviert | nicht reserviert | nicht reserviert |
| UND | reserviert | nicht reserviert | reserviert |
| gegen | nicht reserviert | streng-nicht-reserviert | nicht reserviert |
| BELIEBIG | reserviert | nicht reserviert | reserviert |
| ARCHIV | nicht reserviert | nicht reserviert | nicht reserviert |
| ANORDNUNG | nicht reserviert | nicht reserviert | reserviert |
| WIE | reserviert | nicht reserviert | reserviert |
| ASC | nicht reserviert | nicht reserviert | nicht reserviert |
| AN | nicht reserviert | nicht reserviert | reserviert |
| AUTORISIERUNG | reserviert | nicht reserviert | reserviert |
| ZWISCHEN | nicht reserviert | nicht reserviert | reserviert |
| BEIDE | reserviert | nicht reserviert | reserviert |
| EIMER | nicht reserviert | nicht reserviert | nicht reserviert |
| EIMER | nicht reserviert | nicht reserviert | nicht reserviert |
| BIS | nicht reserviert | nicht reserviert | reserviert |
| Cache | nicht reserviert | nicht reserviert | nicht reserviert |
| KASKADE | nicht reserviert | nicht reserviert | nicht reserviert |
| FALL (given the lack of context, this translation assumes it refers to a general case or instance) | reserviert | nicht reserviert | reserviert |
| WERFEN | reserviert | nicht reserviert | reserviert |
| VERÄNDERUNG | nicht reserviert | nicht reserviert | nicht reserviert |
| PRÜFEN | reserviert | nicht reserviert | reserviert |
| KLAR | nicht reserviert | nicht reserviert | nicht reserviert |
| CLUSTER | nicht reserviert | nicht reserviert | nicht reserviert |
| GECLUSTERT | nicht reserviert | nicht reserviert | nicht reserviert |
| CODEGEN | nicht reserviert | nicht reserviert | nicht reserviert |
| VERGLEICHEN | reserviert | nicht reserviert | reserviert |
| SAMMLUNG | nicht reserviert | nicht reserviert | nicht reserviert |
| COLUMN | reserviert | nicht reserviert | reserviert |
| COLUMNS | nicht reserviert | nicht reserviert | nicht reserviert |
| KOMMENTAR | nicht reserviert | nicht reserviert | nicht reserviert |
| BEGEHEN | nicht reserviert | nicht reserviert | reserviert |
| KOMPAKT | nicht reserviert | nicht reserviert | nicht reserviert |
| KOMPRIMIERUNGEN | nicht reserviert | nicht reserviert | nicht reserviert |
| BERECHNEN | nicht reserviert | nicht reserviert | nicht reserviert |
| KONKATENIEREN | nicht reserviert | nicht reserviert | nicht reserviert |
| CONSTRAINT | reserviert | nicht reserviert | reserviert |
| KOSTEN | nicht reserviert | nicht reserviert | nicht reserviert |
| ERSTELLEN | reserviert | nicht reserviert | reserviert |
| KREUZ | reserviert | streng-nicht-reserviert | reserviert |
| WÜRFEL | nicht reserviert | nicht reserviert | reserviert |
| AKTUELL | nicht reserviert | nicht reserviert | reserviert |
| HEUTIGES_DATUM | reserviert | nicht reserviert | reserviert |
| CURRENT_TIME | reserviert | nicht reserviert | reserviert |
| CURRENT_TIMESTAMP | reserviert | nicht reserviert | reserviert |
| AKTUELLER_BENUTZER | reserviert | nicht reserviert | reserviert |
| DATEN | nicht reserviert | nicht reserviert | nicht reserviert |
| DATENBANK | nicht reserviert | nicht reserviert | nicht reserviert |
| DATENBANKEN | nicht reserviert | nicht reserviert | nicht reserviert |
| TAG | nicht reserviert | nicht reserviert | nicht reserviert |
| DBPROPERTIES | nicht reserviert | nicht reserviert | nicht reserviert |
| DEFINIERT | nicht reserviert | nicht reserviert | nicht reserviert |
| Löschen | nicht reserviert | nicht reserviert | reserviert |
| BEGRENZT | nicht reserviert | nicht reserviert | nicht reserviert |
| DESC | nicht reserviert | nicht reserviert | nicht reserviert |
| BESCHREIBEN | nicht reserviert | nicht reserviert | reserviert |
| DFS | nicht reserviert | nicht reserviert | nicht reserviert |
| VERZEICHNISSE | nicht reserviert | nicht reserviert | nicht reserviert |
| VERZEICHNIS | nicht reserviert | nicht reserviert | nicht reserviert |
| EINDEUTIG | reserviert | nicht reserviert | reserviert |
| VERTEILEN | nicht reserviert | nicht reserviert | nicht reserviert |
| DIV | nicht reserviert | nicht reserviert | kein Schlüsselwort |
| FALLEN LASSEN | nicht reserviert | nicht reserviert | reserviert |
| ODER | reserviert | nicht reserviert | reserviert |
| ENDE | reserviert | nicht reserviert | reserviert |
| FLUCHT | reserviert | nicht reserviert | reserviert |
| ENTKOMMEN | nicht reserviert | nicht reserviert | nicht reserviert |
| außer | reserviert | streng-nicht-reserviert | reserviert |
| UMTAUSCH | nicht reserviert | nicht reserviert | nicht reserviert |
| EXISTIERT | nicht reserviert | nicht reserviert | reserviert |
| EXPLAIN | nicht reserviert | nicht reserviert | nicht reserviert |
| EXPORTIEREN | nicht reserviert | nicht reserviert | nicht reserviert |
| VERLÄNGERT | nicht reserviert | nicht reserviert | nicht reserviert |
| EXTERN | nicht reserviert | nicht reserviert | reserviert |
| AUSZUG | nicht reserviert | nicht reserviert | reserviert |
| FALSCH | reserviert | nicht reserviert | reserviert |
| HOLEN | reserviert | nicht reserviert | reserviert |
| FELDER | nicht reserviert | nicht reserviert | nicht reserviert |
| Filter | reserviert | nicht reserviert | reserviert |
| Dateiformat | nicht reserviert | nicht reserviert | nicht reserviert |
| ERSTE | nicht reserviert | nicht reserviert | nicht reserviert |
| FN | nicht reserviert | nicht reserviert | nicht reserviert |
| FOLGENDE | nicht reserviert | nicht reserviert | nicht reserviert |
| FÜR | reserviert | nicht reserviert | reserviert |
| FREMDE | reserviert | nicht reserviert | reserviert |
| Format | nicht reserviert | nicht reserviert | nicht reserviert |
| FORMATIERT | nicht reserviert | nicht reserviert | nicht reserviert |
| VON | reserviert | nicht reserviert | reserviert |
| VOLL | reserviert | streng-nicht-reserviert | reserviert |
| FUNKTION | nicht reserviert | nicht reserviert | reserviert |
| FUNKTIONEN | nicht reserviert | nicht reserviert | nicht reserviert |
| ERZEUGT | nicht reserviert | nicht reserviert | nicht reserviert |
| GLOBAL | nicht reserviert | nicht reserviert | reserviert |
| GRANT | reserviert | nicht reserviert | reserviert |
| ZUSCHÜSSE | nicht reserviert | nicht reserviert | nicht reserviert |
| GRUPPE | reserviert | nicht reserviert | reserviert |
| GRUPPIERUNG | nicht reserviert | nicht reserviert | reserviert |
| HAVING | reserviert | nicht reserviert | reserviert |
| STUNDE | nicht reserviert | nicht reserviert | nicht reserviert |
| WENN | nicht reserviert | nicht reserviert | kein Schlüsselwort |
| IGNORIEREN | nicht reserviert | nicht reserviert | nicht reserviert |
| IMPORTIEREN | nicht reserviert | nicht reserviert | nicht reserviert |
| IN | reserviert | nicht reserviert | reserviert |
| INDEX | nicht reserviert | nicht reserviert | nicht reserviert |
| INDEXE | nicht reserviert | nicht reserviert | nicht reserviert |
| INNEN | reserviert | streng-nicht-reserviert | reserviert |
| INPATH | nicht reserviert | nicht reserviert | nicht reserviert |
| INPUTFORMAT | nicht reserviert | nicht reserviert | nicht reserviert |
| INSERT | nicht reserviert | nicht reserviert | reserviert |
| SCHNITTSTELLE | reserviert | streng-nicht-reserviert | reserviert |
| INTERVALL | nicht reserviert | nicht reserviert | reserviert |
| IN | reserviert | nicht reserviert | reserviert |
| IST | reserviert | nicht reserviert | reserviert |
| ARTIKEL | nicht reserviert | nicht reserviert | nicht reserviert |
| JOIN | reserviert | streng-nicht-reserviert | reserviert |
| JSON | nicht reserviert | nicht reserviert | nicht reserviert |
| SCHLÜSSEL | nicht reserviert | nicht reserviert | nicht reserviert |
| SCHLÜSSEL | nicht reserviert | nicht reserviert | nicht reserviert |
| LETZTE | nicht reserviert | nicht reserviert | nicht reserviert |
| SEITLICH | reserviert | streng-nicht-reserviert | reserviert |
| FAUL | nicht reserviert | nicht reserviert | nicht reserviert |
| FÜHREND | reserviert | nicht reserviert | reserviert |
| LINKS | reserviert | streng-nicht-reserviert | reserviert |
| Gefällt mir | nicht reserviert | nicht reserviert | reserviert |
| ILIKE | nicht reserviert | nicht reserviert | nicht reserviert |
| LIMIT | nicht reserviert | nicht reserviert | nicht reserviert |
| LINIEN | nicht reserviert | nicht reserviert | nicht reserviert |
| LIST | nicht reserviert | nicht reserviert | nicht reserviert |
| LADUNG | nicht reserviert | nicht reserviert | nicht reserviert |
| LOKAL | nicht reserviert | nicht reserviert | reserviert |
| LAGERPLATZ | nicht reserviert | nicht reserviert | nicht reserviert |
| SCHLEUSE | nicht reserviert | nicht reserviert | nicht reserviert |
| SCHLÖSSER | nicht reserviert | nicht reserviert | nicht reserviert |
| LOGISCH | nicht reserviert | nicht reserviert | nicht reserviert |
| MAKRO | nicht reserviert | nicht reserviert | nicht reserviert |
| KARTE | nicht reserviert | nicht reserviert | nicht reserviert |
| PAARIG | nicht reserviert | nicht reserviert | nicht reserviert |
| VERSCHMELZEN | nicht reserviert | nicht reserviert | nicht reserviert |
| MINUTE | nicht reserviert | nicht reserviert | nicht reserviert |
| MINUS | nicht reserviert | streng-nicht-reserviert | nicht reserviert |
| MONAT | nicht reserviert | nicht reserviert | nicht reserviert |
| MSCK | nicht reserviert | nicht reserviert | nicht reserviert |
| NAMESPACE | nicht reserviert | nicht reserviert | nicht reserviert |
| NAMESPACES | nicht reserviert | nicht reserviert | nicht reserviert |
| NATÜRLICH | reserviert | streng-nicht-reserviert | reserviert |
| Nein | nicht reserviert | nicht reserviert | reserviert |
| NICHT | reserviert | nicht reserviert | reserviert |
| NULL | reserviert | nicht reserviert | reserviert |
| NULLEN | nicht reserviert | nicht reserviert | nicht reserviert |
| VON | nicht reserviert | nicht reserviert | reserviert |
| EIN | reserviert | streng-nicht-reserviert | reserviert |
| NUR | reserviert | nicht reserviert | reserviert |
| Option | nicht reserviert | nicht reserviert | nicht reserviert |
| OPTIONEN | nicht reserviert | nicht reserviert | nicht reserviert |
| ODER | reserviert | nicht reserviert | reserviert |
| BESTELLUNG | reserviert | nicht reserviert | reserviert |
| AUS | nicht reserviert | nicht reserviert | reserviert |
| äußere | reserviert | nicht reserviert | reserviert |
| OUTPUTFORMAT | nicht reserviert | nicht reserviert | nicht reserviert |
| Ende | nicht reserviert | nicht reserviert | nicht reserviert |
| ÜBERSCHNEIDUNGEN | reserviert | nicht reserviert | reserviert |
| Überlagerung | nicht reserviert | nicht reserviert | nicht reserviert |
| ÜBERSCHREIBEN | nicht reserviert | nicht reserviert | nicht reserviert |
| PARTITION | nicht reserviert | nicht reserviert | reserviert |
| AUFGETEILT | nicht reserviert | nicht reserviert | nicht reserviert |
| PARTITIONEN | nicht reserviert | nicht reserviert | nicht reserviert |
| PROZENT | nicht reserviert | nicht reserviert | nicht reserviert |
| PIVOT | nicht reserviert | nicht reserviert | nicht reserviert |
| PLATZIERUNG | nicht reserviert | nicht reserviert | nicht reserviert |
| POSITION | nicht reserviert | nicht reserviert | reserviert |
| VORHERGEHEND | nicht reserviert | nicht reserviert | nicht reserviert |
| Primär | reserviert | nicht reserviert | reserviert |
| SCHULLEITER | nicht reserviert | nicht reserviert | nicht reserviert |
| EIGENSCHAFTEN | nicht reserviert | nicht reserviert | nicht reserviert |
| BEREINIGEN | nicht reserviert | nicht reserviert | nicht reserviert |
| QUALIFY | reserviert | nicht reserviert | reserviert |
| FRAGE | nicht reserviert | nicht reserviert | nicht reserviert |
| BEREICH | nicht reserviert | nicht reserviert | reserviert |
| EMPFÄNGER | nicht reserviert | nicht reserviert | nicht reserviert |
| RECIPIENTS | nicht reserviert | nicht reserviert | nicht reserviert |
| RECORDREADER | nicht reserviert | nicht reserviert | nicht reserviert |
| RECORDWRITER | nicht reserviert | nicht reserviert | nicht reserviert |
| WIEDERHERSTELLEN | nicht reserviert | nicht reserviert | nicht reserviert |
| REDUZIEREN | nicht reserviert | nicht reserviert | nicht reserviert |
| REFERENZEN | reserviert | nicht reserviert | reserviert |
| REFRESH | nicht reserviert | nicht reserviert | nicht reserviert |
| REGEXP | nicht reserviert | nicht reserviert | kein Schlüsselwort |
| REMOVE | nicht reserviert | nicht reserviert | nicht reserviert |
| UMBENENNEN | nicht reserviert | nicht reserviert | nicht reserviert |
| REPARIEREN | nicht reserviert | nicht reserviert | nicht reserviert |
| ERSETZEN | nicht reserviert | nicht reserviert | nicht reserviert |
| RESET | nicht reserviert | nicht reserviert | nicht reserviert |
| RESPEKT | nicht reserviert | nicht reserviert | nicht reserviert |
| EINSCHRÄNKEN | nicht reserviert | nicht reserviert | nicht reserviert |
| REVOKE | nicht reserviert | nicht reserviert | reserviert |
| Richtig | reserviert | streng-nicht-reserviert | reserviert |
| RLIKE | nicht reserviert | nicht reserviert | nicht reserviert |
| Rolle | nicht reserviert | nicht reserviert | nicht reserviert |
| Rollen | nicht reserviert | nicht reserviert | nicht reserviert |
| Rollback | nicht reserviert | nicht reserviert | reserviert |
| Roll-Up | nicht reserviert | nicht reserviert | reserviert |
| RUDERN | nicht reserviert | nicht reserviert | reserviert |
| Reihen | nicht reserviert | nicht reserviert | reserviert |
| SCHEMA | nicht reserviert | nicht reserviert | nicht reserviert |
| SCHEMAS | nicht reserviert | nicht reserviert | kein Schlüsselwort |
| SEKUNDE | nicht reserviert | nicht reserviert | nicht reserviert |
| SELECT | reserviert | nicht reserviert | reserviert |
| HALB | nicht reserviert | streng-nicht-reserviert | nicht reserviert |
| GETRENNT | nicht reserviert | nicht reserviert | nicht reserviert |
| SERDE | nicht reserviert | nicht reserviert | nicht reserviert |
| SERDEPROPERTIES | nicht reserviert | nicht reserviert | nicht reserviert |
| Sitzungsbenutzer | reserviert | nicht reserviert | reserviert |
| SET | nicht reserviert | nicht reserviert | reserviert |
| GARNITUREN | nicht reserviert | nicht reserviert | nicht reserviert |
| TEILEN | nicht reserviert | nicht reserviert | nicht reserviert |
| SHARES | nicht reserviert | nicht reserviert | nicht reserviert |
| ZEIGEN | nicht reserviert | nicht reserviert | nicht reserviert |
| VERZERRT | nicht reserviert | nicht reserviert | nicht reserviert |
| EINIGE | reserviert | nicht reserviert | reserviert |
| Sortierung | nicht reserviert | nicht reserviert | nicht reserviert |
| SORTIERT | nicht reserviert | nicht reserviert | nicht reserviert |
| ANFANGEN | nicht reserviert | nicht reserviert | reserviert |
| Statistik | nicht reserviert | nicht reserviert | nicht reserviert |
| GESPEICHERT | nicht reserviert | nicht reserviert | nicht reserviert |
| STRATIFIZIEREN | nicht reserviert | nicht reserviert | nicht reserviert |
| STRUKTUR | nicht reserviert | nicht reserviert | nicht reserviert |
| SUBSTR | nicht reserviert | nicht reserviert | nicht reserviert |
| Substring | nicht reserviert | nicht reserviert | nicht reserviert |
| SYNC | nicht reserviert | nicht reserviert | nicht reserviert |
| TABLE | reserviert | nicht reserviert | reserviert |
| TABLES | nicht reserviert | nicht reserviert | nicht reserviert |
| TABLESAMPLE | nicht reserviert | nicht reserviert | reserviert |
| TBLPROPERTIES | nicht reserviert | nicht reserviert | nicht reserviert |
| AUSHILFE | nicht reserviert | nicht reserviert | kein Schlüsselwort |
| VORLÄUFIG | nicht reserviert | nicht reserviert | nicht reserviert |
| BEENDET | nicht reserviert | nicht reserviert | nicht reserviert |
| DANN | reserviert | nicht reserviert | reserviert |
| ZEIT | reserviert | nicht reserviert | reserviert |
| AN | reserviert | nicht reserviert | reserviert |
| BERÜHREN | nicht reserviert | nicht reserviert | nicht reserviert |
| NACHFOLGEND | reserviert | nicht reserviert | reserviert |
| TRANSAKTION | nicht reserviert | nicht reserviert | nicht reserviert |
| TRANSAKTIONEN | nicht reserviert | nicht reserviert | nicht reserviert |
| UMWANDELN | nicht reserviert | nicht reserviert | nicht reserviert |
| SCHNEIDEN | nicht reserviert | nicht reserviert | nicht reserviert |
| WAHR | nicht reserviert | nicht reserviert | reserviert |
| ABSCHNEIDEN | nicht reserviert | nicht reserviert | reserviert |
| TRY_CAST | nicht reserviert | nicht reserviert | nicht reserviert |
| ART | nicht reserviert | nicht reserviert | nicht reserviert |
| AUFHEBEN DER ARCHIVIERUNG | nicht reserviert | nicht reserviert | nicht reserviert |
| UNBEGRENZT | nicht reserviert | nicht reserviert | nicht reserviert |
| UNCACHE | nicht reserviert | nicht reserviert | nicht reserviert |
| VEREINIGUNG | reserviert | streng-nicht-reserviert | reserviert |
| EINZIGARTIG | reserviert | nicht reserviert | reserviert |
| UNBEKANNT | reserviert | nicht reserviert | reserviert |
| AUFSCHLIEßEN | nicht reserviert | nicht reserviert | nicht reserviert |
| UNSET | nicht reserviert | nicht reserviert | nicht reserviert |
| UPDATE | nicht reserviert | nicht reserviert | reserviert |
| VERWENDEN | nicht reserviert | nicht reserviert | nicht reserviert |
| Benutzer | reserviert | nicht reserviert | reserviert |
| VERWENDEN | reserviert | streng-nicht-reserviert | reserviert |
| VALUES | nicht reserviert | nicht reserviert | reserviert |
| ANSEHEN | nicht reserviert | nicht reserviert | nicht reserviert |
| VIEWS | nicht reserviert | nicht reserviert | nicht reserviert |
| WANN | reserviert | nicht reserviert | reserviert |
| WHERE | reserviert | nicht reserviert | reserviert |
| WINDOW | nicht reserviert | nicht reserviert | reserviert |
| MIT | reserviert | nicht reserviert | reserviert |
| Jahr | nicht reserviert | nicht reserviert | nicht reserviert |
| Zone | nicht reserviert | nicht reserviert | nicht reserviert |