Variabelen
van toepassing op: de Databricks Runtime 14.1 en hoger
Variabelen zijn typen en schema-gekwalificeerde objecten die values opslaan en privé zijn binnen een sessie. In Azure Databricks-variabelen zijn tijdelijke en gedeclareerd binnen een sessie met behulp van de DECLARE VARIABLE-instructie.
De termen tijdelijke variabele en sessievariabele zijn uitwisselbaar.
De 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 DROP VARIABLE-instructie.
Wanneer een variabele is gedefinieerd, wordt de waarde NULL
of het resultaat van de optioneel opgegeven standaardexpressie.
U kunt de waarde van een willekeurig aantal variabelen op elk gewenst moment wijzigen met de instructie SET VARIABLE tijdens de sessie.
Wanneer wordt verwezen in een query namen van variabelen hun naamruimte delen met column namen, column aliassenen namen van functieparameters. Variabelen zijn de laatste in de volgorde van oplossing in 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 set zonder de context van SQL te verlaten.
- Er kan naar variabelen worden verwezen in de lichamen van tijdelijke views- 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 IDENTIFIER-clausule 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 te set.
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
Verwante artikelen
- DECLARE VARIABLE
- DROP VARIABLE
- IDENTIFIER clausule
- parametermarkeringen
- naamsresolutie
- SET VARIABLE
- naam van variabele