Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Memisahkan expr1, …, exprN ke dalam numRows baris.
Sintaks
stack(numRows, expr1 [, ...] )
Argumen
-
numRows: Nilai literalINTEGERyang lebih besar dari 0 yang menentukan jumlah baris yang dihasilkan. -
exprN: Ekspresi dengan jenis apapun. JenisexprNapa pun harus sesuai dengan jenis dariexpr(N+numRows).
Pengembalian
Sekumpulan baris numRows yang mencakup kolom max(1, (N/numRows)) yang dihasilkan oleh fungsi ini.
Baris yang tidak lengkap diisi dengan NULL sebagai isian.
Secara default, kolom yang dihasilkan diberi nama col0, … col(n-1).
stack setara dengan VALUES klausa.
Berlaku untuk:
Databricks Runtime 12.1 dan yang lebih lama:stackhanya dapat ditempatkan dalam daftarSELECTsebagai akar ekspresi atau mengikuti LATERAL VIEW. Saat menempatkan fungsi dalam daftarSELECT, tidak boleh ada fungsi generator lain dalam daftarSELECTyang sama, atau UNSUPPORTED_GENERATOR.MULTI_GENERATOR akan muncul.Berlaku untuk:
Databricks SQL
Databricks Runtime 12.2 LTS ke atas:Penggunaan dari klausa LATERAL VIEW atau daftar
SELECTsudah tidak digunakan lagi. Sebagai gantinya, panggilstacksebagai table_reference.
Contoh
Berlaku untuk:
Databricks Runtime 12.1 dan yang lebih lama:
> 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
Berlaku untuk:
Databricks SQL
Databricks Runtime 12.2 LTS ke atas:
> 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