Функция генератора табличных значений stack
Область применения: Databricks SQL Databricks Runtime
Разделяет expr1
, …, exprN
на numRows
строк.
Синтаксис
stack(numRows, expr1 [, ...] )
Аргументы
numRows
: литералINTEGER
больше 0, указывающий количество созданных строк.exprN
: выражение любого типа. Тип любогоexprN
должен соответствовать типуexpr(N+numRows)
.
Возвраты
Набор numRows
строк, включающий max(1, (N/numRows))
столбцы, созданные этой функцией.
Неполная строка заполняется с помощью NULL
s.
По умолчанию создаваемые столбцы называются col0, … col(n-1)
.
stack
эквивалентен предложениюVALUES
.
Применимо к: Databricks Runtime 12.1 и более ранних версий:
stack
можно поместить только в список вSELECT
качестве корневого элемента выражения или после бокового представления. При размещении функции в спискеSELECT
не должно быть другой функции генератора в том жеSELECT
списке или UNSUPPORTED_GENERATOR. MULTI_GENERATOR вызывается.Применимо к: Databricks SQL Databricks Runtime 12.2 LTS и выше:
Вызов из предложения LATERAL VIEW или
SELECT
списка не рекомендуется. Вместо этого вызовитеstack
как table_reference.
Примеры
Применимо к: Databricks Runtime 12.1 и более ранних версий:
> SELECT 'hello', stack(2, 1, 2, 3) AS (first, second), 'world';
hello 1 2 world
hello 3 NULL world
> SELECT 'hello', stack(2, 1, 2, 3) AS (first, second), stack(2, 'a', 'b') AS (third) 'world';
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
-- Equivalent usage of VALUES
> SELECT 'hello', s1.*, s2.*, 'world'
FROM VALUES(1, 2), (3, NULL) AS s1(first, second),
VALUES('a'), ('b') AS s2(third);
hello 1 2 a world
hello 3 NULL a world
hello 1 2 b world
hello 3 NULL b world
Применимо к: Databricks SQL Databricks Runtime 12.2 LTS и выше:
> SELECT 'hello', s.*, 'world'
FROM stack(2, 1, 2, 3) AS s(first, second);
hello 1 2 world
hello 3 NULL world
> SELECT 'hello', s1.*, s2.*, 'world'
FROM stack(2, 1, 2, 3) AS s1(first, second),
stack(2, 'a', 'b') AS s2(third);
hello 1 2 a world
hello 3 NULL a world
hello 1 2 b world
hello 3 NULL b world
Связанные функции
- Функция генератора с табличным значением explode
- Функция генератора табличных значений explode_outer
- Функция генератора с табличным значением inline
- Функция генератора с табличным значением inline_outer
- Функция генератора с табличным значением posexplode_outer
- Функция генератора с табличным значением posexplode