Megosztás a következőn keresztül:


Változók

A következőkre vonatkozik: Databricks Runtime check marked yes 14.1 vagy újabb

A változók gépelt és séma-minősített objektumok, amelyek a munkamenetek számára privát értékeket tárolnak. Az Azure Databricksben a változók ideiglenesek, és egy munkameneten belül deklarálódnak a DEKLARÁLT VÁLTOZÓ utasítás használatával.

Az ideiglenes változó és a munkamenet változója felcserélhető.

Az ideiglenes változókat tároló séma.system.session

A rendszer implicit módon elvet egy változót az azt definiáló munkamenet végén. A DROP VARIABLE utasítással azonban korábban explicit módon elvetheti.

Ha egy változó definiálva van, annak NULL értéke vagy az opcionálisan megadott alapértelmezett kifejezés eredménye. A Standard kiadás T VÁLTOZÓ utasítással tetszőleges számú változó értékét módosíthatja a munkamenet során bármikor.

Amikor egy lekérdezési változó neveire hivatkozik, a névtér oszlopnevekkel, oszlop aliasokkal és függvényparaméternevekkel van megosztva. A változók névütközések esetén a feloldás sorrendjében utolsók.

A változók szemantikailag három módon különböznek a paraméterjelölőktől:

  • A paraméterjelölők csak egyetlen utasításban léteznek. Az invoking API-nak meg kell adnia az értéket és a típust. A változók a munkamenet időtartama alatt léteznek, így több utasításban is hivatkozhatnak rájuk anélkül, hogy minden utasításhoz értéket kellene megadniuk.
  • A változók az SQL környezetének elhagyása nélkül is beállíthatók.
  • A változók az ideiglenes nézetek és az SQL-függvények szerveiben hivatkozhatók. Ha ideiglenes nézetre vagy ideiglenes SQL-függvényre hivatkozik, a rendszer a törzs bármely változójának aktuális értékét fogja használni.

Az IDENTIFIER záradék argumentumként fogadja el a változókat. Ez lehetővé teszi az azonosítók paraméterezését a változók és a változók beállításához használt lekérdezések eredményeinek használatával.

Példák

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