Dela via


Variabler

gäller för: Databricks Runtime kontrollera markerat ja 14.1 och senare

Variabler är typade 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 hjälp av DECLARE VARIABLE-instruktionen.

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 ta bort den tidigare med hjälp av DROP VARIABLE-instruktionen.

När en variabel har definierats är dess värde NULL eller resultatet av det valfritt angivna standarduttrycket. Du kan ändra värdet för valfritt antal variabler med instruktionen SET VARIABLE när som helst under sessionen.

När de refereras till i en fråga variabelnamn delar sitt namnområde med kolumnnamn, kolumnaliaseroch funktionsparameternamn. Variablerna är sist i upplö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 existerar under sessionens varaktighet, vilket gör att de kan refereras i flera uttalanden utan att behöva ange 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.

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