Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
генератор функции с табличными значениями
Область применения:
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