Megosztás a következőn keresztül:


SET változó

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 14.1 vagy újabb

Módosítja egy vagy több ideiglenes változó értékét.

Konfigurációs paraméter beállításához használja SET konfig.

Szintaxis

SET [ VAR | VARIABLE ] { variable_name = { expression | DEFAULT } } [, ...]

SET [ VAR | VARIABLE ] ( variable_name [, ...] ) = ( query ) }

Megjegyzés: A összetett utasításon kívül a VAR vagy VARIABLE kulcsszavakat kötelező egyértelműsíteni egy SET konfigurációs utasításból. Összetett utasításon belül VAR vagy VARIABLE nem engedélyezett.

Paraméterek

  • variable_name

    Megadja a munkamenetben vagy összetett utasításban korábban definiált ideiglenes változó nevét.

    Ha a változó nem található, az Azure Databricks UNRESOLVED_VARIABLE hibát okoz.

    Ha ismétlődő változókat ad meg, az Azure Databricks DUPLICATE_ASSIGNMENTS hibát okoz.

  • kifejezés

    Bármely jól formázott kifejezés, amely az új változó értékét számítja ki.

  • ALAPÉRTELMEZETT

    A változó alapértelmezett kifejezését használta, vagy NULL ha nincs megadva az új változó értékének kiszámításához.

  • lekérdezés

    Minden jól formázott lekérdezés a következő korlátozásokkal:

    Ha a lekérdezés nem ad vissza sorokat, az Azure Databricks az összes megadott változót a következőre NULLállítja be: .

    A DEFAULT kulcsszót választólista-kifejezés helyett használhatja a változó alapértelmezett értékére való beállításához.

Példák

> DECLARE VARIABLE myvar1 INT DEFAULT 7;
> DECLARE VARIABLE myvar2 STRING DEFAULT 'hello';

-- Set a SQL variable to a value
> SET VAR myvar1 = 5;
> VALUES (myvar1);
  5

-- Set a SQL variable to a value inside of a compound statement
> BEGIN
    SET myvar1 = 5;
  END;
> VALUES (myvar1);
  5

-- Set a SQL variable back to DEFAULT
> SET VARIABLE myvar1 = DEFAULT;
> VALUES (myvar1);
  7

-- Set a SQL variable to the result of a scalar subquery.
> SET VARIABLE myvar1 = (SELECT max(c1) FROM VALUES(1), (2) AS T(c1));
> VALUES (myvar1);
  2

-- Set multiple variables from a query
> SET VAR (myvar1, myvar2) = (VALUES(10, 'world'));
> VALUES (myvar1, myvar2);
  10   world

-- Set multiple variables from expressions
> SET VAR myvar1 = 11, myvar2 = 'hello';
> VALUES (myvar1, myvar2);
  11   hello

-- Set multiple variables based on a query
> SET VARIABLE (myvar1, myvar2)
    = (SELECT max(c1), CAST(min(c1) AS STRING) FROM VALUES(1), (2) AS T(c1));
> VALUES (myvar1, myvar2);
  2    1

-- Assign NULLs on empty query
> SET VAR (myvar1, myvar2)
    = (SELECT max(c1), CAST(min(c1) AS STRING) FROM VALUES(1), (2) AS T(c1) HAVING max(c1) = 0);
> VALUES (myvar1, myvar2);
  NULL  NULL

-- Using a variable with an IDENTIFIER clause
> DECLARE colname STRING;
> SET VAR colname = 'c1';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
  1

> SET VARIABLE colname = 'c2';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
  2

-- Variable defaults are recomputed
> DECLARE VARIABLE val DEFAULT RAND();
> SELECT val;
  0.1234...

> SET VARIABLE val = DEFAULT;
> SELECT val;
  0.9876...