Bagikan melalui


inline_outer fungsi penghasil nilai tabel

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

Meledakkan array structs ke dalam tabel dengan semantik OUTER.

Dalam Databricks SQL dan versi 16.1 dan seterusnya dari Databricks Runtime, fungsi ini mendukung pemanggilan parameter bernama .

Sintaks

inline_outer(input)

Argumen

  • input: Ekspresi ARRAY < STRUCT > .

Sekumpulan baris yang terdiri dari kolom dalam elemen struktur dari array input. Kolom yang dihasilkan oleh inline adalah nama bidang.

Jika input adalah NULL satu baris dengan NULLs untuk setiap kolom dihasilkan.

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

    inline_outer 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 inline_outer sebagai table_reference.

Contoh

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

> SELECT inline_outer(array(struct(1, 'a'), struct(2, 'b'))), 'Spark SQL';
 1  a Spark SQL
 2  b Spark SQL

> SELECT inline_outer(array(struct(1, 'a'), struct(1, 'b'))),
         inline_outer(array(struct('c', 1.0), struct('d', 2.0))),
         'Spark SQL';
 1  a Spark SQL
 2  b Spark SQL
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR

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

> SELECT i.*, 'Spark SQL'
    FROM inline_outer(array(struct(1, 'a'), struct(2, 'b'))) AS i;
 1  a Spark SQL
 2  b Spark SQL

> SELECT i1.*, i2.*, 'Spark SQL'
   FROM  inline_outer(array(struct(1, 'a'), struct(1, 'b'))) AS i1,
         inline_outer(array(struct('c', 1.0), struct('d', 2.0))) AS i2;
 1      a       c       1.0     Spark SQL
 1      b       c       1.0     Spark SQL
 1      a       d       2.0     Spark SQL
 1      b       d       2.0     Spark SQL