Conformità ANSI in Databricks Runtime
Si applica a: Databricks Runtime
Questo articolo descrive la conformità ANSI in Databricks Runtime. Per la modalità ANSI in Databricks SQL, vedere ANSI_MODE.
Spark SQL offre due opzioni per supportare la conformità con lo standard SQL ANSI: spark.sql.ansi.enabled
e spark.sql.storeAssignmentPolicy
.
Quando spark.sql.ansi.enabled
è impostato su true
, Spark SQL usa un dialetto conforme ANSI invece di essere conforme a Hive. Ad esempio, Spark genererà un'eccezione in fase di esecuzione anziché restituire risultati Null se gli input a un operatore/funzione SQL non sono validi. Alcune caratteristiche del dialetto ANSI potrebbero non essere direttamente dallo standard SQL ANSI, ma i relativi comportamenti sono allineati allo stile di ANSI SQL.
Spark SQL offre inoltre un'opzione indipendente per controllare i comportamenti di conversione impliciti quando si archivia righe in una tabella. I comportamenti di cast vengono definiti come regole di assegnazione dell'archivio nello standard.
Quando spark.sql.storeAssignmentPolicy
è impostato su ANSI
, Spark SQL è conforme alle regole di assegnazione dell'archivio ANSI. Si tratta di una configurazione separata perché il valore predefinito è ANSI
, mentre la configurazione spark.sql.ansi.enabled
è disabilitata per impostazione predefinita.
La tabella seguente riepiloga il comportamento:
Nome della proprietà | Predefinito | significato |
---|---|---|
spark.sql.ansi.enabled |
false | Se true, Spark tenta di conformarsi alla specifica SQL ANSI:
|
spark.sql.storeAssignmentPolicy |
ANSI | Quando si archivia un valore in una colonna con un tipo di dati diverso, Spark esegue la conversione dei tipi. Esistono tre criteri per le regole di coercizione dei tipi: ANSI , legacy e strict .
|
Le sottosezioni seguenti presentano modifiche al comportamento nelle operazioni aritmetiche, nelle conversioni dei tipi e nell'analisi SQL quando è abilitata la modalità ANSI. Per le conversioni dei tipi in Spark SQL, sono disponibili tre tipi e questo articolo li introduce uno alla sola: cast, assegnazione di archivi e coercizione dei tipi.
Operazioni aritmetiche
In Spark SQL le operazioni aritmetiche eseguite sui tipi numerici (ad eccezione del decimale) non vengono controllate per impostazione predefinita per gli overflow.
Ciò significa che nel caso in cui un'operazione causi overflow, il risultato è lo stesso con l'operazione corrispondente in un programma Java o Scala (ad esempio, se la somma di 2 numeri interi è superiore al valore massimo rappresentabile, il risultato è un numero negativo). Spark SQL restituisce invece null per gli overflow decimali.
Quando spark.sql.ansi.enabled
è impostato su true
e si verifica un overflow in operazioni aritmetiche numeriche e a intervalli, genera un'eccezione aritmetica in fase di esecuzione.
-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
error: integer overflow
-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
-2147483648
Cast
Quando spark.sql.ansi.enabled
è impostato su true
, il cast esplicito tramite la sintassi CAST
genera un'eccezione di runtime per i modelli di cast non validi definiti nello standard, ad esempio i cast da una stringa a un intero.
La CAST
clausola della modalità Spark ANSI segue le regole di sintassi della sezione 6.13 "specifica del cast" in ISO/IEC 9075-2:2011 Information Technology - Linguaggi di database - SQL - Parte 2: Foundation (SQL/Foundation). Consente specificatamente le seguenti conversioni di tipi semplici che non sono consentite in base allo standard ANSI:
- NumericType <=> BooleanType
- TipoStringa <=> TipoBinario
Le combinazioni valide del tipo di dati di origine e di destinazione in un'espressione CAST
sono fornite dalla tabella seguente.
"Y" indica che la combinazione è sintatticamente valida senza restrizione e "N" indica che la combinazione non è valida.
SourceTarget | Numerico | Stringa | Data | Marca temporale | Intervallo | Booleano | Binario | Array | Mappa | Struct |
---|---|---|---|---|---|---|---|---|---|---|
Numerico | Y | Y | N | N | N | S | N | N | N | N |
String | Y | Sì | Sì | S | Sì | S | Y | N | N | N |
Data | N | Y | Sì | Sì | N | N | N | N | N | N |
Data e ora: | N | Sì | Y | Sì | N | N | N | N | N | N |
Intervallo | N | Sì | N | N | S | N | N | N | N | N |
Booleano | S | Sì | N | N | N | S | N | N | N | N |
Binario | S | N | N | N | N | N | Y | N | N | N |
Array | N | N | N | N | N | N | N | Sì | N | N |
Mappa | N | N | N | N | N | N | N | N | Y | N |
Struct | N | N | N | N | N | N | N | N | N | S |
-- 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
Assegnazione dello Store
L'impostazione spark.sql.storeAssignmentPolicy
predefinita è ANSI
. Con questa impostazione, quando i tipi di dati dei valori di origine non corrispondono ai tipi di colonna di destinazione, Spark SQL aggiunge automaticamente clausole CAST ANSI all'istruzione INSERT.
Durante l'inserimento di tabelle secondo questa politica, Spark verifica e rifiuta conversioni non valide, generando un'eccezione per garantire la qualità dei dati. Questo significa che, se un tentativo di inserimento fallisce a causa di una discrepanza di tipo, non porterà alla scrittura parziale dei dati nella tabella.
Esempi:
-- 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
Questi esempi mostrano Spark SQL che impedisce l'inserimento di dati incompatibili, mantenendo così l'integrità dei dati.
Quando il spark.sql.storeAssignmentPolicy
è impostato su LEGACY
, Spark SQL ripristina il comportamento prevalente fino a Spark 2.x. In questa modalità, invece di usare ANSI CAST, applica le operazioni CAST legacy. In questo criterio, i cast non validi durante gli inserimenti di tabelle comportano l'inserimento di valori NULL o valori non corretti, anziché generare un'eccezione.
Esempi:
-- 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)
Coercizione dei tipi
Promozione e precedenza dei tipi
Quando spark.sql.ansi.enabled
è impostato su true
, Spark SQL usa diverse regole che regolano il modo in cui vengono risolti i conflitti tra i tipi di dati.
Al centro di questa risoluzione dei conflitti è l'elenco di precedenza dei tipi che definisce se i valori di un determinato tipo di dati possono essere promossi in modo implicito a un altro tipo di dati.
Tipo di dati | elenco di precedenza(da più stretto a più largo) |
---|---|
Byte | Byte -> Short -> Int -> Long -> Decimal -> Float* -> Double |
Breve | Short -> Int - Long ->> Decimal-> Float* -> Double |
Int | Int - Long -> Decimal ->> Float* -> Double |
Lungo | Long - Decimal ->> Float* -> Double |
Decimale | Decimal -> Float* -> Double |
Galleggiare | Float -> Double |
Doppio | Doppio |
Data | Data -> Marcatempo |
Marca temporale | Marca temporale |
String | String |
Binario | Binario |
Booleano | Booleano |
Intervallo | Intervallo |
Mappa | Mappa** |
Array | Array** |
Struttura | Struct** |
- Per evitare la perdita di precisione, il tipo float viene ignorato nella risoluzione dei tipi meno comune.
** Per un tipo complesso, la regola di precedenza si applica in modo ricorsivo ai relativi elementi componenti.
Le regole speciali si applicano al tipo String e ai valori NULL non tipizzato. Un valore NULL può essere alzato di livello a qualsiasi altro tipo, mentre un valore String può essere promosso a qualsiasi tipo di dati semplice.
Si tratta di una rappresentazione grafica dell'elenco di precedenza come albero diretto:
Risoluzione del tipo meno comune
Il tipo meno comune di un set di tipi è il tipo più stretto raggiungibile dall'elenco di precedenza da tutti gli elementi del set di tipi.
La risoluzione dei tipi meno comune viene usata per:
- Decidere se una funzione che prevede un parametro di un tipo può essere richiamata usando un argomento di un tipo più stretto.
- Derivare il tipo di argomento per le funzioni che richiedono un tipo di argomento condiviso per più parametri, ad esempio coalesce, least o greatest.
- Derivare i tipi di operando per operatori quali operazioni aritmetiche o confronti.
- Derivare il tipo di risultato per espressioni come l'espressione 'case'.
- Derivare i tipi di elemento, chiave o valore per i costruttori di array e mappa.
Le regole speciali vengono applicate se il tipo meno comune viene risolto in FLOAT. Con i valori float, se uno dei tipi è INT, BIGINT o DECIMAL, il tipo meno comune viene convertito in DOUBLE per evitare la potenziale perdita di cifre.
-- 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.
Funzioni SQL
Il comportamento di alcune funzioni SQL può essere diverso in modalità ANSI (spark.sql.ansi.enabled=true
).
-
size
: questa funzione restituisce null per l'input Null in modalità ANSI. -
element_at
:- Questa funzione genera un'eccezione
ArrayIndexOutOfBoundsException
se si usano indici non validi. - Questa funzione genera un'eccezione
NoSuchElementException
se la chiave non esiste nella mappa.
- Questa funzione genera un'eccezione
- Questa funzione
elt
generaArrayIndexOutOfBoundsException
se si usano indici non validi. -
make_date
: questa funzione ha esito negativo con un'eccezione se la data del risultato non è valida. -
make_timestamp
: questa funzione ha esito negativo con un'eccezione se il timestamp del risultato non è valido. -
make_interval
: questa funzione ha esito negativo con un'eccezione se l'intervallo di risultati non è valido. -
next_day
: questa funzione generaIllegalArgumentException
se l'input non è un giorno valido della settimana. -
parse_url
: Questa funzione lanciaIllegalArgumentException
se una stringa di input non è un URL valido. -
to_date
: questa funzione fallisce con un'eccezione se la stringa di input non può essere analizzata o la stringa del pattern non è valida. -
to_timestamp
: Questa funzione fallisce con un'eccezione se la stringa di input non può essere analizzata o la stringa del modello non è valida. -
to_unix_timestamp
: questa funzione genera un'eccezione se la stringa di input non può essere interpretata o la stringa di pattern non è valida. -
unix_timestamp
: questa funzione fallisce con un'eccezione se la stringa di input non può essere analizzata o la stringa del modello non è valida.
Operatori SQL
Il comportamento di alcuni operatori SQL può essere diverso in modalità ANSI (spark.sql.ansi.enabled=true
).
-
array_col[index]
: questo operatore genera un'eccezione se si utilizzano indici non validiArrayIndexOutOfBoundsException
. -
map_col[key]
: Questo operatore genera un'eccezioneNoSuchElementException
se la chiave non esiste nella mappa. -
CAST(string_col AS TIMESTAMP)
: Questo operatore produce un'eccezione se non riesce ad analizzare la stringa di input. -
CAST(string_col AS DATE)
: questo operatore genera un'eccezione se la stringa di input non può essere interpretata.
Funzioni utili per la modalità ANSI
Quando la modalità ANSI è attivata, genera eccezioni per le operazioni non valide. È possibile usare le funzioni SQL seguenti per eliminare tali eccezioni.
-
try_cast
: identico aCAST
, ad eccezione del fatto che restituisceNULL
il risultato anziché generare un'eccezione in caso di errore di runtime. -
try_add
: identico all'operatore+
add, ad eccezione del fatto che restituisce ilNULL
risultato anziché generare un'eccezione per overflow di valore integrale. -
try_divide
: identico all'operatore/
di divisione , ad eccezione del fatto che restituisceNULL
il risultato anziché generare un'eccezione per la divisione di 0.
Parole chiave SQL
Se spark.sql.ansi.enabled
è true, Spark SQL userà il parser in modalità ANSI.
In questa modalità Spark SQL include due tipi di parole chiave:
- Parole chiave riservate: parole chiave riservate e che non possono essere usate come identificatori per tabella, vista, colonna, funzione, alias e così via.
- Parole chiave non riservate: parole chiave che hanno un significato speciale solo in contesti specifici e possono essere usate come identificatori in altri contesti. Ad esempio,
EXPLAIN SELECT ...
è un comando, ma EXPLAIN può essere usato come identificatori in altre posizioni.
Quando la modalità ANSI è disabilitata, Spark SQL ha due tipi di parole chiave:
- Parole chiave non riservate: stessa definizione di quella abilitata per la modalità ANSI.
- Parole chiave strettamente non riservate: una versione rigorosa di parole chiave non riservate, che non possono essere usate come alias di tabella.
Per impostazione predefinita spark.sql.ansi.enabled
, è false.
Di seguito è riportato un elenco di tutte le parole chiave in Spark SQL.
Parola chiave | Modalità ANSI di Spark SQL | Modalità predefinita di Spark SQL | SQL-2016 |
---|---|---|---|
AGGIUNGI | non riservato | non riservato | non riservato |
DOPO | non riservato | non riservato | non riservato |
TUTTI | riservato | non riservato | riservato |
ALTER | non riservato | non riservato | riservato |
SEMPRE | non riservato | non riservato | non riservato |
ANALISI | non riservato | non riservato | non riservato |
E | riservato | non riservato | riservato |
ANTI | non riservato | strettamente non riservato | non riservato |
QUALSIASI | riservato | non riservato | riservato |
ARCHIVIO | non riservato | non riservato | non riservato |
ARRAY | non riservato | non riservato | riservato |
AS | riservato | non riservato | riservato |
ASC | non riservato | non riservato | non riservato |
AT | non riservato | non riservato | riservato |
AUTORIZZAZIONE | riservato | non riservato | riservato |
BETWEEN | non riservato | non riservato | riservato |
BOTH | riservato | non riservato | riservato |
SECCHIO | non riservato | non riservato | non riservato |
SECCHI | non riservato | non riservato | non riservato |
BY | non riservato | non riservato | riservato |
CACHE | non riservato | non riservato | non riservato |
CASCADE | non riservato | non riservato | non riservato |
CASE | riservato | non riservato | riservato |
CAST | riservato | non riservato | riservato |
CAMBIO | non riservato | non riservato | non riservato |
VERIFICA | riservato | non riservato | riservato |
Chiaro | non riservato | non riservato | non riservato |
RAGGRUPPAMENTO | non riservato | non riservato | non riservato |
raggruppato | non riservato | non riservato | non riservato |
CODEGEN | non riservato | non riservato | non riservato |
COLLATE | riservato | non riservato | riservato |
COLLEZIONE | non riservato | non riservato | non riservato |
COLUMN | riservato | non riservato | riservato |
COLUMNS | non riservato | non riservato | non riservato |
COMMENTO | non riservato | non riservato | non riservato |
COMMIT | non riservato | non riservato | riservato |
COMPATTO | non riservato | non riservato | non riservato |
COMPATTAZIONI | non riservato | non riservato | non riservato |
Calcolo | non riservato | non riservato | non riservato |
CONCATENATE | non riservato | non riservato | non riservato |
CONSTRAINT | riservato | non riservato | riservato |
COSTO | non riservato | non riservato | non riservato |
CREA | riservato | non riservato | riservato |
CROSS | riservato | strict-non-reserved | riservato |
Cubo | non riservato | non riservato | riservato |
CURRENT | non riservato | non riservato | riservato |
DATA_CORRENTE | riservato | non riservato | riservato |
ORA_CORRENTE | riservato | non riservato | riservato |
CURRENT_TIMESTAMP | riservato | non riservato | riservato |
UTENTE_CORRENTE | riservato | non riservato | riservato |
DATI | non riservato | non riservato | non riservato |
DATABASE | non riservato | non riservato | non riservato |
DATABASES | non riservato | non riservato | non riservato |
GIORNO | non riservato | non riservato | non riservato |
DBPROPERTIES | non riservato | non riservato | non riservato |
DEFINITO | non riservato | non riservato | non riservato |
ELIMINA | non riservato | non riservato | riservato |
DELIMITATO | non riservato | non riservato | non riservato |
DESC | non riservato | non riservato | non riservato |
DESCRIBE | non riservato | non riservato | riservato |
DFS | non riservato | non riservato | non riservato |
DIRECTORY | non riservato | non riservato | non riservato |
Elenco | non riservato | non riservato | non riservato |
Distinto | riservato | non riservato | riservato |
DISTRIBUIRE | non riservato | non riservato | non riservato |
DIV | non riservato | non riservato | non una parola chiave |
DROP | non riservato | non riservato | riservato |
ALTRIMENTI | riservato | non riservato | riservato |
END | riservato | non riservato | riservato |
SCAPPO | riservato | non riservato | riservato |
SFUGGITO | non riservato | non riservato | non riservato |
ECCETTO | riservato | rigidamente non riservato | riservato |
Scambio | non riservato | non riservato | non riservato |
ESISTE | non riservato | non riservato | riservato |
EXPLAIN | non riservato | non riservato | non riservato |
ESPORTAZIONE | non riservato | non riservato | non riservato |
ESTESO | non riservato | non riservato | non riservato |
ESTERNO | non riservato | non riservato | riservato |
ESTRATTO | non riservato | non riservato | riservato |
FALSO | riservato | non riservato | riservato |
FETCH | riservato | non riservato | riservato |
CAMPI | non riservato | non riservato | non riservato |
FILTRO | riservato | non riservato | riservato |
Formato di file | non riservato | non riservato | non riservato |
PRIMO | non riservato | non riservato | non riservato |
FN | non riservato | non riservato | non riservato |
SEGUENTE | non riservato | non riservato | non riservato |
FOR | riservato | non riservato | riservato |
STRANIERO | riservato | non riservato | riservato |
FORMATO | non riservato | non riservato | non riservato |
FORMATTATO | non riservato | non riservato | non riservato |
FROM | riservato | non riservato | riservato |
Completo | riservato | rigido-non-riservato | riservato |
FUNZIONE | non riservato | non riservato | riservato |
FUNZIONI | non riservato | non riservato | non riservato |
GENERATO | non riservato | non riservato | non riservato |
GLOBAL | non riservato | non riservato | riservato |
GRANT | riservato | non riservato | riservato |
SOVVENZIONI | non riservato | non riservato | non riservato |
GRUPPO | riservato | non riservato | riservato |
RAGGRUPPAMENTO | non riservato | non riservato | riservato |
HAVING | riservato | non riservato | riservato |
ORA | non riservato | non riservato | non riservato |
IF | non riservato | non riservato | non una parola chiave |
IGNORE | non riservato | non riservato | non riservato |
Importazione | non riservato | non riservato | non riservato |
IN | riservato | non riservato | riservato |
INDEX | non riservato | non riservato | non riservato |
INDICI | non riservato | non riservato | non riservato |
interno | riservato | strict-non-riservato | riservato |
INPATH | non riservato | non riservato | non riservato |
INPUTFORMAT | non riservato | non riservato | non riservato |
INSERT | non riservato | non riservato | riservato |
INTERSECT | riservato | rigoroso-non-riservato | riservato |
INTERVALLO | non riservato | non riservato | riservato |
INTO | riservato | non riservato | riservato |
IS | riservato | non riservato | riservato |
ELEMENTI | non riservato | non riservato | non riservato |
JOIN | riservato | rigido-non-riservato | riservato |
JSON | non riservato | non riservato | non riservato |
KEY | non riservato | non riservato | non riservato |
CHIAVI | non riservato | non riservato | non riservato |
ULTIMO | non riservato | non riservato | non riservato |
LATERALE | riservato | rigido-non-riservato | riservato |
PIGRO | non riservato | non riservato | non riservato |
LEADING | riservato | non riservato | riservato |
Sinistra | riservato | rigido-non-riservato | riservato |
MI PIACE | non riservato | non riservato | riservato |
ILIKE | non riservato | non riservato | non riservato |
LIMIT | non riservato | non riservato | non riservato |
POEMA | non riservato | non riservato | non riservato |
LIST | non riservato | non riservato | non riservato |
LOAD | non riservato | non riservato | non riservato |
LOCAL | non riservato | non riservato | riservato |
LOCATION | non riservato | non riservato | non riservato |
BLOCCO | non riservato | non riservato | non riservato |
BLOCCHI | non riservato | non riservato | non riservato |
LOGICO | non riservato | non riservato | non riservato |
MACRO | non riservato | non riservato | non riservato |
MAPPA | non riservato | non riservato | non riservato |
ABBINATO | non riservato | non riservato | non riservato |
Unisci | non riservato | non riservato | non riservato |
MINUTI | non riservato | non riservato | non riservato |
MENO | non riservato | stretto-non-riservato | non riservato |
MONTH | non riservato | non riservato | non riservato |
MSCK | non riservato | non riservato | non riservato |
NAMESPACE | non riservato | non riservato | non riservato |
SPAZI DEI NOMI | non riservato | non riservato | non riservato |
NATURALE | riservato | rigido-non-riservato | riservato |
NO | non riservato | non riservato | riservato |
NON | riservato | non riservato | riservato |
NULL | riservato | non riservato | riservato |
Valori Nulli | non riservato | non riservato | non riservato |
OF | non riservato | non riservato | riservato |
In... | riservato | rigido-non-riservato | riservato |
SOLO | riservato | non riservato | riservato |
OPZIONE | non riservato | non riservato | non riservato |
OPZIONI | non riservato | non riservato | non riservato |
OPPURE | riservato | non riservato | riservato |
ORDINE | riservato | non riservato | riservato |
Fuori | non riservato | non riservato | riservato |
esterno | riservato | non riservato | riservato |
OUTPUTFORMAT | non riservato | non riservato | non riservato |
OVER | non riservato | non riservato | non riservato |
Sovrapposizioni | riservato | non riservato | riservato |
sovrapposizione | non riservato | non riservato | non riservato |
SOVRASCRIVERE | non riservato | non riservato | non riservato |
PARTITION | non riservato | non riservato | riservato |
PARTIZIONATO | non riservato | non riservato | non riservato |
PARTIZIONI | non riservato | non riservato | non riservato |
PERCENTO | non riservato | non riservato | non riservato |
PIVOT | non riservato | non riservato | non riservato |
POSIZIONAMENTO | non riservato | non riservato | non riservato |
posizione | non riservato | non riservato | riservato |
PRECEDENTE | non riservato | non riservato | non riservato |
Principale | riservato | non riservato | riservato |
PRINCIPALI | non riservato | non riservato | non riservato |
PROPRIETÀ | non riservato | non riservato | non riservato |
PURGE | non riservato | non riservato | non riservato |
QUALIFY | riservato | non riservato | riservato |
Ricerca | non riservato | non riservato | non riservato |
RANGE | non riservato | non riservato | riservato |
DESTINATARIO | non riservato | non riservato | non riservato |
RECIPIENTS | non riservato | non riservato | non riservato |
RECORDREADER | non riservato | non riservato | non riservato |
Scrittore di Record | non riservato | non riservato | non riservato |
RECUPERARE | non riservato | non riservato | non riservato |
RIDURRE | non riservato | non riservato | non riservato |
RIFERIMENTI | riservato | non riservato | riservato |
REFRESH | non riservato | non riservato | non riservato |
REGEXP | non riservato | non riservato | non una parola chiave |
REMOVE | non riservato | non riservato | non riservato |
Rinomina | non riservato | non riservato | non riservato |
RIPARARE | non riservato | non riservato | non riservato |
REPLACE | non riservato | non riservato | non riservato |
RESET | non riservato | non riservato | non riservato |
RISPETTO | non riservato | non riservato | non riservato |
Restringere | non riservato | non riservato | non riservato |
REVOKE | non riservato | non riservato | riservato |
RIGHT | riservato | stretto-non-riservato | riservato |
RLIKE | non riservato | non riservato | non riservato |
RUOLO | non riservato | non riservato | non riservato |
RUOLI | non riservato | non riservato | non riservato |
ROLLBACK | non riservato | non riservato | riservato |
Aggregazione | non riservato | non riservato | riservato |
ROW | non riservato | non riservato | riservato |
ROWS | non riservato | non riservato | riservato |
SCHEMA | non riservato | non riservato | non riservato |
SCHEMI | non riservato | non riservato | non una parola chiave |
Secondo | non riservato | non riservato | non riservato |
SELECT | riservato | non riservato | riservato |
SEMI | non riservato | strettamente non riservato | non riservato |
SEPARATO | non riservato | non riservato | non riservato |
SERDE | non riservato | non riservato | non riservato |
SERDEPROPERTIES | non riservato | non riservato | non riservato |
SESSION_USER | riservato | non riservato | riservato |
SET | non riservato | non riservato | riservato |
Gruppi | non riservato | non riservato | non riservato |
CONDIVIDI | non riservato | non riservato | non riservato |
SHARES | non riservato | non riservato | non riservato |
Spettacolo | non riservato | non riservato | non riservato |
RITORTO | non riservato | non riservato | non riservato |
ALCUNI | riservato | non riservato | riservato |
SORT | non riservato | non riservato | non riservato |
ORDINATO | non riservato | non riservato | non riservato |
AVVIA | non riservato | non riservato | riservato |
STATISTICHE | non riservato | non riservato | non riservato |
MEMORIZZATO | non riservato | non riservato | non riservato |
STRATIFICARE | non riservato | non riservato | non riservato |
Struttura | non riservato | non riservato | non riservato |
SUBSTR | non riservato | non riservato | non riservato |
sottostringa | non riservato | non riservato | non riservato |
SYNC | non riservato | non riservato | non riservato |
TABLE | riservato | non riservato | riservato |
TABLES | non riservato | non riservato | non riservato |
TABLESAMPLE | non riservato | non riservato | riservato |
TBLPROPERTIES | non riservato | non riservato | non riservato |
TEMP | non riservato | non riservato | non una parola chiave |
TEMPORANEO | non riservato | non riservato | non riservato |
TERMINATO | non riservato | non riservato | non riservato |
THEN | riservato | non riservato | riservato |
TEMPO | riservato | non riservato | riservato |
TO | riservato | non riservato | riservato |
TOCCARE | non riservato | non riservato | non riservato |
Seguente | riservato | non riservato | riservato |
TRANSAZIONE | non riservato | non riservato | non riservato |
TRANSAZIONI | non riservato | non riservato | non riservato |
TRASFORMAZIONE | non riservato | non riservato | non riservato |
TRIM | non riservato | non riservato | non riservato |
TRUE | non riservato | non riservato | riservato |
TRUNCATE | non riservato | non riservato | riservato |
TRY_CAST | non riservato | non riservato | non riservato |
TIPO | non riservato | non riservato | non riservato |
Disarchivia | non riservato | non riservato | non riservato |
ILLIMITATO | non riservato | non riservato | non riservato |
UNCACHE | non riservato | non riservato | non riservato |
UNIONE | riservato | strettamente non riservato | riservato |
UNIQUE | riservato | non riservato | riservato |
SCONOSCIUTO | riservato | non riservato | riservato |
SBLOCCA | non riservato | non riservato | non riservato |
ANNULLATA | non riservato | non riservato | non riservato |
UPDATE | non riservato | non riservato | riservato |
Uso | non riservato | non riservato | non riservato |
UTENTE | riservato | non riservato | riservato |
USANDO | riservato | rigoroso-non-riservato | riservato |
VALUES | non riservato | non riservato | riservato |
VISTA | non riservato | non riservato | non riservato |
VIEWS | non riservato | non riservato | non riservato |
Quando | riservato | non riservato | riservato |
WHERE | riservato | non riservato | riservato |
WINDOW | non riservato | non riservato | riservato |
CON | riservato | non riservato | riservato |
ANNO | non riservato | non riservato | non riservato |
ZONE | non riservato | non riservato | non riservato |