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
Digunakan bersama dengan fungsi generator seperti EXPLODE, yang menghasilkan tabel virtual yang berisi satu atau beberapa baris.
LATERAL VIEW menerapkan baris tersebut ke setiap baris output asli.
Di Databricks SQL dan dimulai dengan Databricks Runtime 12.2 klausa ini tidak digunakan lagi. Anda harus memanggil fungsi generator yang menghasilkan nilai tabel sebagai referensi_tabel.
Sintaks
LATERAL VIEW [ OUTER ] generator_function ( expression [, ...] ) [ table_identifier ] AS column_identifier [, ...]
Parameter
OUTER
Jika
OUTERditentukan, mengembalikan null jika array/peta input kosong atau null.-
Fungsi generator (EXPLODE, INLINE, dll.). Jika fungsi ini bukan fungsi generator, Azure Databricks menaikkan UNSUPPORTED_GENERATOR. NOT_GENERATOR.
-
Alias yang opsional untuk
generator_function. -
Mencantumkan alias kolom
generator_function, yang dapat digunakan dalam baris output. Jumlah pengidentifikasi kolom harus cocok dengan jumlah kolom yang dikembalikan oleh fungsi generator. Jika jumlah pengidentifikasi kolom tidak cocok dengan kolom output generator, Azure Databricks menaikkan UDTF_ALIAS_NUMBER_MISMATCH.
Kondisi kesalahan umum
Contoh
> CREATE TABLE person (id INT, name STRING, age INT, class INT, address STRING);
> INSERT INTO person VALUES
(100, 'John', 30, 1, 'Street 1'),
(200, 'Mary', NULL, 1, 'Street 2'),
(300, 'Mike', 80, 3, 'Street 3'),
(400, 'Dan', 50, 4, 'Street 4');
> SELECT * FROM person
LATERAL VIEW EXPLODE(ARRAY(30, 60)) tableName AS c_age
LATERAL VIEW EXPLODE(ARRAY(40, 80)) AS d_age;
id name age class address c_age d_age
------ ------- ------- -------- ----------- -------- --------
100 John 30 1 Street 1 30 40
100 John 30 1 Street 1 30 80
100 John 30 1 Street 1 60 40
100 John 30 1 Street 1 60 80
200 Mary NULL 1 Street 2 30 40
200 Mary NULL 1 Street 2 30 80
200 Mary NULL 1 Street 2 60 40
200 Mary NULL 1 Street 2 60 80
300 Mike 80 3 Street 3 30 40
300 Mike 80 3 Street 3 30 80
300 Mike 80 3 Street 3 60 40
300 Mike 80 3 Street 3 60 80
400 Dan 50 4 Street 4 30 40
400 Dan 50 4 Street 4 30 80
400 Dan 50 4 Street 4 60 40
400 Dan 50 4 Street 4 60 80
> SELECT c_age, COUNT(1) FROM person
LATERAL VIEW EXPLODE(ARRAY(30, 60)) AS c_age
LATERAL VIEW EXPLODE(ARRAY(40, 80)) AS d_age
GROUP BY c_age;
c_age count(1)
-------- -----------
60 8
30 8
SELECT * FROM person
LATERAL VIEW EXPLODE(ARRAY()) tableName AS c_age;
id name age class address c_age
----- ------- ------ -------- ---------- --------
> SELECT * FROM person
LATERAL VIEW OUTER EXPLODE(ARRAY()) tableName AS c_age;
id name age class address c_age
------ ------- ------- -------- ----------- --------
100 John 30 1 Street 1 NULL
200 Mary NULL 1 Street 2 NULL
300 Mike 80 3 Street 3 NULL
400 Dan 50 4 Street 4 NULL