Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к:
Databricks SQL
Databricks Runtime 14.1 и более поздних версий
Изменяет значение одной или нескольких временных переменных.
Чтобы задать параметр, используйте SET config.
Синтаксис
SET [ VAR | VARIABLE ] { variable_name = { expression | DEFAULT } } [, ...]
SET [ VAR | VARIABLE ] ( variable_name [, ...] ) = ( query ) }
Примечание. Вне составного оператора ключевые слова VAR или VARIABLE являются обязательными для разграничения от оператора SET конфигурации.
В составной инструкции использование VAR или VARIABLE не разрешается.
Параметры
-
Указывает имя временной переменной, ранее определенной в сеансе или составной инструкции.
Если переменная не удается найти Azure Databricks, возникает ошибка UNRESOLVED_VARIABLE .
При указании повторяющихся переменных Azure Databricks возникает ошибка DUPLICATE_ASSIGNMENTS .
-
Любое хорошо сформированное выражение вычисляет новое значение переменной.
DEFAULT
Используется выражение по умолчанию переменной или
NULLесли для вычисления нового значения переменной не указано ни одно.-
Любой хорошо сформированный запрос со следующими ограничениями:
- Запрос возвращает не более одной строки (ROW_SUBQUERY_TOO_MANY_ROWS).
- Количество столбцов, возвращаемых запросом, соответствует количеству указанных имен переменных (ASSIGNMENT_ARITY_MISMATCH).
- Каждый возвращаемый столбец можно преобразовать в переменную в соответствующей позиции (CAST_INVALID_INPUT).
Если запрос не возвращает строки Azure Databricks, для всех указанных переменных задано
NULLзначение.Ключевое слово
DEFAULTможно использовать вместо выражения select-list, чтобы задать переменную по умолчанию.
Примеры
> 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...