LATERAL VIEW yan tümcesi
Şunlar için geçerlidir: Databricks SQL Databricks Runtime
bir veya daha fazla satır içeren bir sanal tablo oluşturan gibi EXPLODE
oluşturucu işlevleriyle birlikte kullanılır. LATERAL VIEW
satırları her özgün çıkış satırına uygular.
Databricks SQL'de ve Databricks Runtime 12.2 ile başlayarak bu yan tümcesi kullanım dışıdır. Tablo değerli bir oluşturucu işlevini table_reference olarak çağırmanız gerekir.
Sözdizimi
LATERAL VIEW [ OUTER ] generator_function ( expression [, ...] ) [ table_identifier ] AS column_identifier [, ...]
Parametreler
DIŞ
Belirtilirse
OUTER
, bir giriş dizisi/eşlemesi boş veya null olduğunda null döndürür.-
Oluşturucu işlevi (EXPLODE, INLINE, vb.).
-
diğer adı
generator_function
isteğe bağlıdır. -
çıkış satırlarında
generator_function
kullanılabilecek sütun diğer adlarını listeler. Sütun tanımlayıcılarının sayısı, oluşturucu işlevi tarafından döndürülen sütun sayısıyla eşleşmelidir.
Örnekler
> 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