Aracılığıyla paylaş


Değişkenler

Şunlar için geçerlidir: Databricks Runtime check marked yes 14.1 ve üzeri

Değişkenler, bir oturuma özel değerleri depolayan girilir ve şemaya uygun nesnelerdir. Azure Databricks'te değişkenler geçicidir ve DECLARE VARIABLE deyimi kullanılarak bir oturum içinde bildirilir.

Geçici değişken ve oturum değişkeni terimleri birbirinin yerine kullanılabilir.

Geçici değişkenlerin bulunduğu şemadır system.session.

Değişkeni tanımlayan oturumun sonunda örtük olarak bırakılır. Ancak DROP VARIABLE deyimini kullanarak daha önce açıkça bırakabilirsiniz.

Bir değişken tanımlandığında değeri veya isteğe bağlı olarak belirtilen varsayılan ifadenin sonucudur NULL . Set VARIABLE deyimiyle istediğiniz sayıda değişkenin değerini oturum sırasında istediğiniz zaman değiştirebilirsiniz.

Sorgu değişkeni adlarında başvurulduğunda ad alanları sütun adları, sütun diğer adları ve işlev parametresi adlarıyla paylaşılır. Ad çakışmaları durumunda değişkenler çözüm sırasına göre son sıradadır.

Değişkenler parametre işaretçilerinden farklı olarak üç şekilde farklılık gösterir:

  • Parametre işaretçileri yalnızca tek bir deyim içinde bulunur. Çağırma API'sinin değeri ve türünü sağlaması gerekir. Bir oturumun süresi boyunca değişkenler vardır ve her deyim için bir değer geçirmelerine gerek kalmadan birden çok deyimde bunlara başvurulmasına olanak sağlar.
  • Değişkenler SQL bağlamından ayrılmadan ayarlanabilir.
  • Değişkenlere geçici görünümlerin ve SQL işlevlerinin gövdelerinde başvurulabilir. Geçici bir görünüme veya geçici BIR SQL işlevine başvurduğunda, gövdesindeki herhangi bir değişkenin geçerli değeri kullanılır.

IDENTIFIER yan tümcesi değişkenleri bağımsız değişken olarak kabul eder. Bu, değişkenleri ve bu değişkenleri ayarlamak için kullanılan sorguların sonuçlarını kullanarak tanımlayıcıları parametreleştirmenizi sağlar.

Örnekler

-- 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