Dela via


Variabler

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

Variabler är schema-kvalificerade objekt som lagrar values, vilket är privat 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.

Den schema där tillfälliga 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 variabelnamn refereras till i en fråga delar de sitt namnområde med column namn, column aliasoch 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 vara set utan att lämna kontexten för SQL.
  • Variabler kan refereras i kroppar av tillfälliga funktioner som views och SQL. 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 set 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