Bagikan melalui


explode fungsi generator bernilai meja

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

Mengembalikan sekumpulan baris dengan tidak bersarang collection.

Dalam Databricks SQL dan Databricks Runtime 13.3 LTS dan di atas fungsi ini mendukung pemanggilan parameter bernama.

Sintaks

explode(collection)

Argumen

  • collection: Ekspresi ARRAY atau MAP .

Mengembalikan

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 tidak ada NULL baris yang diproduksi.

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

    explode hanya dapat ditempatkan dalam SELECT daftar sebagai akar ekspresi atau mengikuti TAMPILAN LATERAL. Saat menempatkan fungsi dalam SELECT daftar, tidak boleh ada fungsi generator lain dalam daftar atau UNSUPPORTED_GENERATOR yang samaSELECT. MULTI_GENERATOR dibesarkan.

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

    Pemanggilan dari klausa LATERAL VIEW atau SELECT daftar 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

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