Variabler
Gäller för: Databricks Runtime 14.1 och senare
Variabler skrivs och schemakvalificerade objekt som lagrar värden som är privata för en session. I Azure Databricks är variabler tillfälliga och deklarerade i en session med instruktionen DEKLARERA VARIABEL .
Termerna temporär variabel och sessionsvariabel är utbytbara.
Schemat där temporära variabler finns är system.session
.
En variabel tas bort implicit i slutet av sessionen som definierar den. Men du kan uttryckligen släppa den tidigare med hjälp av uttrycket DROP VARIABLE .
När en variabel har definierats är NULL
dess värde eller resultatet av det valfritt angivna standarduttrycket.
Du kan ändra värdet för valfritt antal variabler med SET VARIABLE-instruktionen när som helst under sessionen.
När de refereras i en fråga delar variabelnamn sitt namnområde med kolumnnamn, kolumnalias och funktionsparameternamn. Variablerna är sist i lösningsordningen vid namnkonflikter.
Variabler skiljer sig semantiskt från parametermarkörer på tre sätt:
- Parametermarkörer finns bara i en enda instruktion. Det anropande API:et måste ange värdet och typen. Variabler finns under en session, vilket gör att de kan refereras i flera instruktioner utan att behöva skicka ett värde för varje -instruktion.
- Variabler kan ställas in utan att lämna kontexten för SQL.
- Variabler kan refereras i organen för tillfälliga vyer och SQL-funktioner. När du refererar till en tillfällig vy eller tillfällig SQL-funktion används det aktuella värdet för alla variabler i dess brödtext.
IDR-satsen accepterar variabler som argument. På så sätt kan du parametrisera identifierare med hjälp av variabler och resultat av frågor som används för att ange dessa variabler.
Exempel
-- 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