SET VARIABLE

Область применения: флажок Databricks SQL флажок Databricks Runtime 14.1 и более поздних версий

Изменяет значение одной или нескольких временных переменных.

Чтобы задать параметр конфигурации, используйте SET.

Синтаксис

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

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

Параметры

  • variable_name

    Указывает имя временной переменной.

    Если переменная не удается найти Azure Databricks, возникает ошибка UNRESOLVED_VARIABLE .

    При указании повторяющихся переменных Azure Databricks возникает ошибка DUPLICATE_ASSIGNMENTS .

  • выражение

    Любое хорошо сформированное выражение вычисляет новое значение переменной.

  • DEFAULT

    Используется выражение по умолчанию переменной или NULL если для вычисления нового значения переменной не указано ни одно.

  • query

    Любой хорошо сформированный запрос со следующими ограничениями:

    • Запрос возвращает не более одной строки (ROW_SUBQUERY_TOO_MANY_ROWS).
    • Количество столбцов, возвращаемых запросом, соответствует количеству указанных имен переменных (ASSIGNMENT_ARITY_MISMATCH).
    • Каждый возвращаемый столбец можно привести к переменной в соответствующей позиции (CAST_INVALID_INPUT).

    Если запрос не возвращает строки Azure Databricks, для всех указанных переменных задано NULLзначение.

    Ключевое DEFAULT слово можно использовать вместо выражения select-list, чтобы задать переменную по умолчанию.

Примеры

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