Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
генератор функции с табличными значениями
Область применения:
Databricks SQL
Databricks Runtime
Разделяет expr1, …, exprN на numRows строк.
Синтаксис
stack(numRows, expr1 [, ...] )
Аргументы
-
numRows: литералINTEGERбольше 0, указывающий количество созданных строк. -
exprN: выражение любого типа. Тип любогоexprNдолжен соответствовать типуexpr(N+numRows).
Возвраты
Набор строк numRows, включающий max(1, (N/numRows)) столбцы, созданные этой функцией.
Неполная строка дополняется символами "NULL".
По умолчанию созданные столбцы называются col0, … col(n-1).
stackэквивалентен предложениюVALUES.
Применимо к:
Databricks Runtime 12.1 и более ранних версий:stackможно поместить в списокSELECTтолько как корень выражения или после LATERAL VIEW. При размещении генерирующей функции в списке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