Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Databricks Runtime 14.1 och senare
Ändrar värdet för en eller flera temporära variabler.
Om du vill ange en konfigurationsparameter använder du SET konfiguration.
Syntax
SET [ VAR | VARIABLE ] { variable_name = { expression | DEFAULT } } [, ...]
SET [ VAR | VARIABLE ] ( variable_name [, ...] ) = ( query ) }
Obs! Utanför ett sammansatt uttryck nyckelorden VAR eller VARIABLE är obligatoriska för att skilja sig från en SET konfiguration-instruktion.
Inom en sammansatt sats tillåts inte VAR eller VARIABLE.
Parametrar
-
Anger namnet på en tillfällig variabel, som tidigare definierats i sessionen eller en sammansatt instruktion.
Om variabeln inte kan hittas genererar Azure Databricks ett UNRESOLVED_VARIABLE fel.
Om du anger dubblettvariabler skapar Azure Databricks ett DUPLICATE_ASSIGNMENTS fel.
-
Alla välformade uttryck som beräknar det nya variabelvärdet.
FÖRVAL
Använde standarduttrycket för variabeln eller
NULLom inget angavs för att beräkna det nya variabelvärdet.-
Alla välformulerad fråga med följande begränsningar:
- Frågan returnerar högst en rad (ROW_SUBQUERY_TOO_MANY_ROWS).
- Antalet kolumner som returneras av frågan matchar antalet angivna variabelnamn (ASSIGNMENT_ARITY_MISMATCH).
- Varje returnerad kolumn kan omvandlas till en variabel på den matchande positionen (CAST_INVALID_INPUT).
Om frågan inte returnerar några rader anger Azure Databricks alla angivna variabler till
NULL.Du kan använda nyckelordet
DEFAULTi stället för ett select-list-uttryck för att ange en variabel som standard.
Exempel
> 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...