Variabel

Berlaku untuk: Databricks Runtime check marked yes 14.1 ke atas

Variabel diketik dan objek memenuhi syarat skema yang menyimpan nilai yang bersifat privat ke sesi. Dalam variabel Azure Databricks bersifat sementara dan dideklarasikan dalam sesi menggunakan pernyataan DECLARE VARIABLE .

Istilah variabel sementara dan variabel sesi dapat dipertukarkan.

Skema tempat variabel sementara berada adalah system.session.

Variabel dihilangkan secara implisit di akhir sesi yang mendefinisikannya. Tetapi Anda dapat secara eksplisit menghilangkannya sebelumnya menggunakan pernyataan DROP VARIABLE .

Ketika variabel didefinisikan nilainya adalah NULL atau hasil dari ekspresi default yang ditentukan secara opsional. Anda dapat mengubah nilai sejumlah variabel dengan pernyataan SET VARIABLE kapan saja selama sesi.

Saat dirujuk dalam nama variabel kueri, bagikan namespace layanannya dengan nama kolom, alias kolom, dan nama parameter fungsi. Variabel terakhir dalam urutan resolusi jika terjadi konflik nama.

Variabel berbeda secara semantik dari penanda parameter dengan tiga cara:

  • Penanda parameter hanya ada dalam satu pernyataan. API pemanggilan harus memberikan nilai dan jenis. Variabel ada selama durasi sesi, memungkinkan mereka dirujuk dalam beberapa pernyataan tanpa perlu meneruskan nilai untuk setiap pernyataan.
  • Variabel dapat diatur tanpa meninggalkan konteks SQL.
  • Variabel dapat dirujuk dalam isi tampilan sementara dan fungsi SQL. Saat Anda mereferensikan tampilan sementara atau fungsi SQL sementara, nilai variabel apa pun saat ini dalam isinya akan digunakan.

Klausa IDENTIFIER menerima variabel sebagai argumen. Ini memungkinkan Anda untuk membuat parameter pengidentifikasi menggunakan variabel dan hasil kueri yang digunakan untuk mengatur variabel tersebut.

Contoh

-- A verbose definition of a temporary variable
> DECLARE OR REPLACE VARIABLE myvar INT DEFAULT 17;

-- A dense definition, including derivation of the type from the default expression
> DECLARE address = named_struct('street', 'Grimmauld Place', 'number', 12);

-- Referencing a variable
> SELECT myvar, session.address.number;
 17  12

-- Setting a single variable
> SET VAR myvar = (SELECT max(c1) FROM VALUES (1), (2) AS t(c1));
> SELECT myvar;
  2

-- Setting multiple variables
> SET VAR (myvar, address) = (SELECT address.number, named_struct('street', address.street, 'number', 10));
> SELECT myvar, address;
  12    {"street":"Grimmauld Place","number":10}

-- Drop a variable
> DROP TEMPORARY VARIABLE myvar;
> DROP TEMPORARY VARIABLE IF EXISTS address;

-- Use the IDENTIFIER clause with a variable
> DECLARE view = 'tempv';
> CREATE OR REPLACE TEMPORARY VIEW IDENTIFIER(view) (c1) AS SELECT 1;
> SELECT * FROM IDENTIFIER(view);
  1