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
Mengembalikan sekumpulan baris dengan membongkar expr dan memberikan penomoran pada posisi-posisinya.
Dalam Databricks SQL dan Databricks Runtime 16.1 ke atas fungsi ini mendukung pemanggilan parameter bernama.
Sintaks
posexplode(collection)
Argumen
-
collection: EkspresiARRAYatauMAP.
Mengembalikan
Sekumpulan baris yang terdiri dari posisi dan elemen array atau kunci dan nilai peta.
Kolom yang dihasilkan oleh posexplode array diberi nama pos dan col.
Kolom untuk peta disebut pos, key dan value.
Jika collection tidak ada NULL baris yang diproduksi.
Berlaku untuk:
Databricks Runtime 12.1 dan yang lebih lama:posexplodehanya dapat ditempatkan dalam daftarSELECTsebagai akar ekspresi atau mengikuti LATERAL VIEW. Saat menempatkan fungsi dalam daftarSELECT, tidak boleh ada fungsi generator lain dalam daftarSELECTatau UNSUPPORTED_GENERATOR yang sama. MULTI_GENERATOR dibesarkan.Berlaku untuk:
Databricks SQL
Databricks Runtime 12.2 LTS ke atas:Pemanggilan dari klausa LATERAL VIEW atau daftar
SELECTtidak digunakan lagi. Sebagai gantinya, panggilposexplodesebagai table_reference.
Contoh
Berlaku untuk:
Databricks Runtime 12.1 dan yang lebih lama:
> SELECT posexplode(array(10, 20)) AS elem, 'Spark';
0 10 Spark
1 20 Spark
> SELECT posexplode(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
0 1 a Spark
1 2 b Spark
> SELECT posexplode(array(1, 2)), posexplode(array(3, 4));
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
Berlaku untuk:
Databricks SQL
Databricks Runtime 12.2 LTS ke atas:
> SELECT pos, col FROM posexplode(array(10, 20));
0 10
1 20
> SELECT pos, key, value FROM posexplode(map(10, 'a', 20, 'b'));
0 10 a
1 22 b
> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, posexplode(array(3, 4)) AS p2;
0 1 0 3
0 1 1 4
1 2 0 3
1 2 1 4
-- Using lateral correlation in Databricks 12.2 and above
> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, LATERAL posexplode(array(3 * p1.col, 4 * p1.col)) AS p2;
0 1 0 3
0 1 1 4
1 2 0 6
1 2 1 8