Változók
A következőkre vonatkozik: Databricks Runtime 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