SET VARIABLE
적용 대상: Databricks SQL Databricks Runtime 14.1 이상
하나 이상의 임시 변수 값을 수정합니다.
구성 매개 변수를 설정하려면 set을(를) SET에 사용하십시오.
구문
SET { VAR | VARIABLE } { variable_name = { expression | DEFAULT } } [, ...]
SET { VAR | VARIABLE } ( variable_name [, ...] ) = ( query ) }
Parameters
-
임시 변수의 이름을 지정합니다.
변수를 찾을 수 없는 경우 Azure Databricks에서 UNRESOLVED_VARIABLE 오류가 발생합니다.
중복 변수를 지정하면 Azure Databricks에서 DUPLICATE_ASSIGNMENTS 오류가 발생합니다.
-
새 변수 값을 계산하는 올바른 형식의 식입니다.
DEFAULT
변수의 기본 식을 사용하거나
NULL
새 변수 값을 계산하도록 지정되지 않은 경우 사용되었습니다.-
다음과 같은 제한 사항이 있는 올바른 형식의 쿼리:
- 쿼리는 최대 한 행(ROW_SUBQUERY_TOO_MANY_ROWS)을 반환합니다.
- 쿼리에서 반환되는 columns 수는 지정된 변수 이름(ASSIGNMENT_ARITY_MISMATCH)의 수와 일치합니다.
- 반환된 각 column 일치하는 위치(CAST_INVALID_INPUT)에서 변수로 캐스팅할 수 있습니다.
쿼리에서 행을 반환하지 않는 경우 Azure Databricks는 지정된 모든 변수를
NULL
.로 설정합니다.select list 식 대신
DEFAULT
키워드를 사용하여 변수를 기본값으로 set 수 있습니다.
예제
> 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 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...