Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:
Databricks SQL
Databricks Runtime 14.1 и выше
Создает приватную временную переменную сеанса, на которую можно ссылаться там, где можно использовать константное выражение. Можно также использовать переменные в сочетании с предложением IDENTIFIER для параметризации идентификаторов в инструкциях SQL.
Переменные изменяются с помощью инструкции SET VARIABLE.
Временные переменные не могут быть использованы в пределах:
- проверочное ограничение
- генерируемый столбец
- выражение по умолчанию
- Тело сохраняемого пользовательского приложения SQL
- Тело сохраняемого представления
Временные переменные также называются переменными сеанса .
Синтаксис
DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name [, ...]
[ data_type ] [ { DEFAULT | = } default_expression ]
До Databricks Runtime 17.2 можно указать только один variable_name раз.
Параметры
ИЛИ ЗАМЕНИТЬ
При указании переменная с тем же именем заменяется.
-
Имя переменной. Имя может быть квалифицировано с помощью
sessionилиsystem.session. ЕслиOR REPLACEне указано, имя переменной должно быть уникальным в сеансе и не должно дублировать другое имя переменной в инструкции. -
Любой поддерживаемый тип данных. Если
data_typeопущен, необходимо указатьDEFAULT, а тип выводится изdefault_expression. DEFAULT default_expression или = default_expression
Определяет начальное значение переменной после создания.
default_expression должен быть приводим кdata_type. Если значение по умолчанию не задано, переменная инициализируетсяNULL.Если выражение содержит вложенный запрос, Azure Databricks вызывает ошибку INVALID_DEFAULT_VALUE.SUBQUERY_EXPRESSION.
Примеры
-- Create a variable with a default
> DECLARE VARIABLE myvar INT DEFAULT 5;
> VALUES (myvar);
5
-- Setting a variable
> SET VAR myvar = (SELECT sum(c1) FROM VALUES(1), (2) AS T(c1);
> VALUES (myvar);
3
-- Variables are the outermost scope.
> SELECT myvar, t.myvar, session.myvar FROM VALUES(1) AS T(myvar);
1 1 3
> DROP TEMPORARY VARIABLE myvar;
-- A minimalist variable declaration
> DECLARE myvar = 5;
> VALUES (myvar);
5
-- Declaring multiple variables
> DECLARE var1, var2 DOUBLE DEFAULT rand();
> VALUES (var1, var2);
0.3745401188473625 0.3745401188473625
-- 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 VAR colname = 'c2';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
2