Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks SQL
Databricks Runtime 14.1 e versioni successive
Modifica il valore di una o più variabili temporanee.
Per impostare un parametro di configurazione, usare SET config.
Sintassi
SET [ VAR | VARIABLE ] { variable_name = { expression | DEFAULT } } [, ...]
SET [ VAR | VARIABLE ] ( variable_name [, ...] ) = ( query ) }
Nota: all'esterno di un'istruzione composta, le parole chiave VAR o VARIABLE sono obbligatorie per disambiguare da un'istruzione SET config.
All'interno di un'istruzione VAR composta o VARIABLE non sono consentiti.
Parametri
-
Specifica il nome di una variabile temporanea, definita in precedenza nella sessione o in un'istruzione composta.
Se non è possibile trovare la variabile Azure Databricks genera un errore di UNRESOLVED_VARIABLE .
Se si specificano variabili duplicate, Azure Databricks genera un errore di DUPLICATE_ASSIGNMENTS .
-
Qualsiasi espressione ben formata che calcola il nuovo valore della variabile.
DEFAULT
È stata usata l'espressione predefinita della variabile o
NULLse non è stata specificata nessuna espressione, per calcolare il nuovo valore della variabile.-
Qualsiasi query che sia ben formata con le seguenti restrizioni:
- La query restituisce al massimo una riga (ROW_SUBQUERY_TOO_MANY_ROWS).
- Il numero di colonne restituite dalla query corrisponde al numero di nomi di variabili specificati (ASSIGNMENT_ARITY_MISMATCH).
- È possibile convertire ogni colonna restituita in una variabile nella posizione corrispondente (CAST_INVALID_INPUT).
Se la query non restituisce righe di Azure Databricks imposta tutte le variabili specificate su
NULL.È possibile usare la parola chiave
DEFAULTanziché un'espressione di elenco di selezione per impostare una variabile sul valore predefinito.
Esempi
> DECLARE VARIABLE myvar1 INT DEFAULT 7;
> DECLARE VARIABLE myvar2 STRING DEFAULT 'hello';
-- Set a SQL variable to a value
> SET VAR myvar1 = 5;
> VALUES (myvar1);
5
-- Set a SQL variable to a value inside of a compound statement
> BEGIN
SET myvar1 = 5;
END;
> VALUES (myvar1);
5
-- Set a SQL variable back to DEFAULT
> SET VARIABLE myvar1 = DEFAULT;
> VALUES (myvar1);
7
-- Set a SQL variable to the result of a scalar subquery.
> SET VARIABLE myvar1 = (SELECT max(c1) FROM VALUES(1), (2) AS T(c1));
> VALUES (myvar1);
2
-- Set multiple variables from a query
> SET VAR (myvar1, myvar2) = (VALUES(10, 'world'));
> VALUES (myvar1, myvar2);
10 world
-- Set multiple variables from expressions
> SET VAR myvar1 = 11, myvar2 = 'hello';
> VALUES (myvar1, myvar2);
11 hello
-- Set multiple variables based on a query
> SET VARIABLE (myvar1, myvar2)
= (SELECT max(c1), CAST(min(c1) AS STRING) FROM VALUES(1), (2) AS T(c1));
> VALUES (myvar1, myvar2);
2 1
-- Assign NULLs on empty query
> SET VAR (myvar1, myvar2)
= (SELECT max(c1), CAST(min(c1) AS STRING) FROM VALUES(1), (2) AS T(c1) HAVING max(c1) = 0);
> VALUES (myvar1, myvar2);
NULL NULL
-- Using a variable with an IDENTIFIER clause
> DECLARE colname STRING;
> SET VAR colname = 'c1';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
1
> SET VARIABLE colname = 'c2';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
2
-- Variable defaults are recomputed
> DECLARE VARIABLE val DEFAULT RAND();
> SELECT val;
0.1234...
> SET VARIABLE val = DEFAULT;
> SELECT val;
0.9876...