Bagikan melalui


explode fungsi penghasil nilai tabel

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Mengembalikan sekumpulan baris dengan menguraikan collection.

Dalam Databricks SQL dan Databricks Runtime 13.3 LTS dan versi terbaru, fungsi ini mendukung pemanggilan parameter dengan nama.

Sintaks

explode(collection)

Argumen

  • collection: Ekspresi ARRAY atau MAP .

Pengembalian

Sekumpulan baris yang terdiri dari elemen array atau kunci dan nilai peta. Kolom yang dihasilkan oleh explode array diberi nama col. Kolom untuk peta dipanggil key dan value.

Jika collection adalah NULL, tidak ada baris yang dihasilkan. Untuk mengembalikan baris tunggal dengan NULLuntuk nilai array atau peta, gunakan fungsi explode_outer().

  • Berlaku untuk:centang ditandai ya Databricks Runtime 12.1 dan yang lebih lama:

    explode hanya dapat ditempatkan dalam daftar SELECT sebagai akar ekspresi atau mengikuti LATERAL VIEW. Saat menempatkan fungsi dalam daftar SELECT, tidak boleh ada fungsi generator lain dalam daftar SELECT yang sama, atau UNSUPPORTED_GENERATOR.MULTI_GENERATOR akan muncul.

  • Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 12.2 LTS ke atas:

    Penggunaan dari klausa LATERAL VIEW atau daftar SELECT sudah tidak digunakan lagi. Sebagai gantinya, panggil explode sebagai table_reference.

Contoh

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 12.1 dan yang lebih lama:

> SELECT explode(array(10, 20)) AS elem, 'Spark';
 10 Spark
 20 Spark

> SELECT explode(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
 1   a   Spark
 2   b   Spark

> SELECT explode(array(1, 2)), explode(array(3, 4));
  Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR

-- The difference between explode() and explode_outer() is that explode_outer() returns NULL if the array is NULL.
> SELECT explode_outer(c1) AS elem, 'Spark' FROM VALUES(array(10, 20)), (null) AS T(c1);
 10   Spark
 20   Spark
 NULL Spark

> SELECT explode(c1) AS elem, 'Spark' FROM VALUES(array(10, 20)), (null) AS T(c1);
 10 Spark
 20 Spark

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 12.2 LTS ke atas:

> SELECT elem, 'Spark' FROM explode(array(10, 20)) AS t(elem);
 10 Spark
 20 Spark

> SELECT num, val, 'Spark' FROM explode(map(1, 'a', 2, 'b')) AS t(num, val);
 1   a   Spark
 2   b   Spark

> SELECT * FROM explode(array(1, 2)), explode(array(3, 4));
 1   3
 1   4
 2   3
 2   4

-- Using lateral correlation in Databricks 12.2 and above
> SELECT * FROM explode(array(1, 2)) AS t, LATERAL explode(array(3 * t.col, 4 * t.col));
 1   3
 1   4
 2   6
 2   8