DEKLARASIKAN VARIABEL
Berlaku untuk: Databricks SQL Databricks Runtime 14.1 ke atas
Membuat variabel privat dan sementara sesi yang dapat Anda referensikan di mana pun ekspresi konstanta dapat digunakan. Anda juga dapat menggunakan variabel dalam kombinasi dengan klausul IDENTIFIER untuk membuat parameter pengidentifikasi dalam pernyataan SQL.
Variabel dimodifikasi menggunakan pernyataan SET VARIABLE .
Variabel sementara tidak dapat dirujuk dalam:
- batasan pemeriksaan
- kolom yang dihasilkan
- ekspresi default
- isi UDF SQL yang bertahan
- isi tampilan yang bertahan
Variabel sementara juga disebut variabel sesi .
Sintaks
DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
[ data_type ] [ { DEFAULT | = } default_expression ]
Parameter
OR REPLACE
Jika ditentukan, variabel dengan nama yang sama diganti.
-
Nama untuk variabel. Nama mungkin memenuhi syarat dengan
session
atausystem.session
. KecualiOR REPLACE
ditentukan, nama harus unik dalam sesi. -
Jenis data apa pun yang didukung. Jika
data_type
dihilangkan, Anda harus menentukanDEFAULT
, dan jenisnya berasal daridefault_expression
. default_expression default atau = default_expression
Menentukan nilai awal variabel setelah pembuatan.
default_expressio
n harus dicor kedata_type
. Jika tidak ada default yang ditentukan, variabel diinisialisasi denganNULL
.Jika ekspresi menyertakan subkueri Azure Databricks akan menaikkan INVALID_DEFAULT_VALUE. SUBQUERY_EXPRESSION kesalahan.
Contoh
-- 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
-- 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