Variables

S’applique à : Databricks Runtime check marked yes14.1 et versions ultérieures

Les variables sont des objets typés et qualifiés par le schéma qui stockent des valeurs privées dans une session. Dans Azure Databricks, elles sont temporaires et déclarées dans une session avec l’instruction DECLARE VARIABLE .

Les termes variables temporaires et variable de session sont interchangeables.

system.session est le schéma dans lequel résident des variables temporaires.

Une variable est supprimée implicitement à la fin de la session qui la définit. Toutefois, vous pouvez le supprimer explicitement précédemment avec l’instruction DROP VARIABLE .

Lorsqu’une variable est définie, sa valeur est NULL ou le résultat de l’expression par défaut spécifiée éventuellement. Vous pouvez modifier la valeur de n’importe quel nombre de variables avec l’instruction SET VARIABLE à tout moment pendant la session.

Lorsqu’ils sont référencés dans une requête, les noms de variables partagent leur espace de noms avec des noms de colonnes, des alias de colonne et des noms de paramètres de fonction. Les variables sont les dernières dans l’ordre de résolution en cas de conflits de noms.

Les variables diffèrent sémantiquement des marqueurs de paramètres de trois façons :

  • Les marqueurs de paramètres existent uniquement dans une seule instruction. L’API appelante doit fournir la valeur et le type. Les variables existent pendant la durée d’une session, ce qui leur permet d’être référencées dans plusieurs instructions sans avoir à passer une valeur pour chaque instruction.
  • Les variables peuvent être définies sans quitter le contexte de SQL.
  • Les variables peuvent être référencées dans les corps des vues temporaires et des fonctions SQL. Lorsque vous référencez une vue temporaire ou une fonction SQL temporaire, la valeur actuelle d’une variable dans son corps sera utilisée.

La clause IDENTIFIER accepte les variables en tant qu’arguments. Cela vous permet de paramétrer des identificateurs à l’aide de variables et de résultats de requêtes utilisées pour définir ces variables.

Exemples

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