Clausule LATERAL VIEW
Van toepassing op: Databricks SQL Databricks Runtime
Wordt gebruikt in combinatie met generatorfuncties zoals EXPLODE
, waarmee een virtuele tabel met een of meer rijen wordt gegenereerd. LATERAL VIEW
past de rijen toe op elke oorspronkelijke uitvoerrij.
In Databricks SQL en te beginnen met Databricks Runtime 12.2 is deze component afgeschaft. U moet een generatorfunctie met tabelwaarden aanroepen als een table_reference.
Syntaxis
LATERAL VIEW [ OUTER ] generator_function ( expression [, ...] ) [ table_identifier ] AS column_identifier [, ...]
Parameters
BUITEN
Als
OUTER
dit is opgegeven, wordt null geretourneerd als een invoermatrix/toewijzing leeg of null is.-
Een generatorfunctie (EXPLODE, INLINE, enzovoort).
-
De alias voor
generator_function
, die optioneel is. -
Geeft een lijst van de kolomaliassen van
generator_function
, die kunnen worden gebruikt in uitvoerrijen. Het aantal kolom-id's moet overeenkomen met het aantal kolommen dat door de generatorfunctie wordt geretourneerd.
Voorbeelden
> 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