Klausa TAMPILAN LATERAL
Berlaku untuk: pemeriksaan 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 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 bernilai tabel sebagai table_reference.
Sintaks
LATERAL VIEW [ OUTER ] generator_function ( expression [, ...] ) [ table_identifier ] AS column_identifier [, ...]
Parameter
LUAR
Jika
OUTER
ditentukan, mengembalikan null jika array/peta input kosong atau null.-
Fungsi generator (EXPLODE, INLINE, dll.).
-
Alias untuk
generator_function
, yang bersifat opsional. -
Mencantumkan alias
generator_function
kolom , yang dapat digunakan dalam baris output. Jumlah pengidentifikasi kolom harus cocok dengan jumlah kolom yang dikembalikan oleh fungsi generator.
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