Delen via


Variabelen

Van toepassing op: Databricks Runtime check marked yes 14.1 en hoger

Variabelen worden getypt en schema-gekwalificeerde objecten waarin waarden worden opgeslagen die privé zijn voor een sessie. In Azure Databricks-variabelen zijn tijdelijk en gedeclareerd binnen een sessie met behulp van de instructie DECLARE VARIABLE .

De termen tijdelijke variabele en sessievariabele zijn uitwisselbaar.

Het schema waarin tijdelijke variabelen zich bevinden, is system.session.

Een variabele wordt impliciet verwijderd aan het einde van de sessie die deze definieert. Maar u kunt het eerder expliciet verwijderen met behulp van de instructie DROP VARIABLE .

Wanneer een variabele is gedefinieerd, is NULL of het resultaat van de optioneel opgegeven standaardexpressie. U kunt de waarde van een willekeurig aantal variabelen met de instructie SET VARIABLE op elk gewenst moment tijdens de sessie wijzigen.

Wanneer wordt verwezen in namen van een queryvariabele, delen ze hun naamruimte met kolomnamen, kolomaliassen en functieparameternamen. Variabelen zijn het laatst in de volgorde van oplossing in het geval van naamconflicten.

Variabelen verschillen semantisch van parametermarkeringen op drie manieren:

  • Parametermarkeringen bestaan alleen binnen één instructie. De aanroepende API moet de waarde en het type opgeven. Variabelen bestaan voor de duur van een sessie, zodat ze in meerdere instructies kunnen worden verwezen zonder dat er voor elke instructie een waarde hoeft te worden doorgegeven.
  • Variabelen kunnen worden ingesteld zonder de context van SQL te verlaten.
  • Er kan naar variabelen worden verwezen in de hoofdteksten van tijdelijke weergaven en SQL-functies. Wanneer u naar een tijdelijke weergave of tijdelijke SQL-functie verwijst, wordt de huidige waarde van een variabele in de hoofdtekst gebruikt.

De ID-component accepteert variabelen als argumenten. Hiermee kunt u id's parameteriseren met behulp van variabelen en resultaten van query's die worden gebruikt om deze variabelen in te stellen.

Voorbeelden

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