適用対象:
Databricks SQL
Databricks Runtime 14.1 以降
定数式を使用できる場所であればどこでも参照できるセッション プライベート一時変数を作成します。 IDENTIFIER 句 と組み合わせて変数を使用して、SQL ステートメント内の識別子をパラメーター化することもできます。
変数は、SET VARIABLE ステートメントを使用して変更されます。
次の場合には一時変数を参照できません。
- CHECK 制約
- 生成された列
- 既定の式
- 永続化された SQL UDF の本体
- 永続化されたビューの本体
一時変数は、セッション変数とも呼ばれます。
構文
DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name [, ...]
[ data_type ] [ { DEFAULT | = } default_expression ]
Databricks Runtime 17.2 より前では、一度に指定できる variable_name は 1 つだけです。
パラメーター
または置き換え
同じ名前の変数を指定した場合は、その変数が置き換えられます。
-
変数の名前。 この名前は
sessionまたはsystem.sessionで修飾できます。OR REPLACE指定しない限り、変数名はセッション内で一意である必要があり、ステートメント内の他の変数名と重複してはなりません。 -
サポートされるすべてのデータ型。
data_typeを省略する場合は、DEFAULTを指定する必要があり、型はdefault_expressionから導出されます。 DEFAULT default_expression または = default_expression
作成後の変数の初期値を定義します。
default_expressioは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