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 baris dengan membatalkan sarang array dengan penomoran posisi menggunakan OUTER semantik.
Dalam Databricks SQL dan Databricks Runtime 16.1 ke atas fungsi ini mendukung pemanggilan parameter bernama.
Sintaks
posexplode_outer(collection)
Argumen
-
collection:Ekspresi ARRAY atau MAP.
Mengembalikan
Sekumpulan baris yang terdiri dari posisi dan elemen array atau kunci dan nilai peta.
Kolom yang dihasilkan oleh posexplode_outer array diberi nama pos dan col.
Kolom untuk peta disebut pos, key dan value.
Jika collection adalah NULL, satu baris dengan nilai-nilai NULL untuk array atau peta.
Berlaku untuk:
Databricks Runtime 12.1 dan yang lebih lama:posexplode_outerhanya 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, panggilposexplode_outersebagai table_reference.
Contoh
Berlaku untuk:
Databricks Runtime 12.1 dan yang lebih lama:
> SELECT posexplode_outer(array(10, 20)) AS elem, 'Spark';
0 10 Spark
1 20 Spark
> SELECT posexplode_outer(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
0 1 a Spark
1 2 b Spark
> SELECT posexplode_outer(array(1, 2)), posexplode_outer(array(3, 4));
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
Berlaku untuk:
Databricks SQL
Databricks Runtime 12.2 LTS ke atas:
> SELECT pos, col FROM posexplode_outer(array(10, 20));
0 10
1 20
> SELECT pos, key, value FROM posexplode_outer(map(10, 'a', 20, 'b'));
0 10 a
1 22 b
> SELECT p1.*, p2.* FROM posexplode_outer(array(1, 2)) AS p1, posexplode_outer(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_outer(array(1, 2)) AS p1, LATERAL posexplode_outer(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