Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
Databricks Runtime
Se usa junto con funciones de generador, como EXPLODE, que genera una tabla virtual que contiene una o varias filas.
LATERAL VIEW aplica las filas a cada fila de salida original.
En Databricks SQL y a partir de Databricks Runtime 12.2, esta cláusula está en desuso. Debe invocar una función de generador con valores de tabla como table_reference.
Sintaxis
LATERAL VIEW [ OUTER ] generator_function ( expression [, ...] ) [ table_identifier ] AS column_identifier [, ...]
Parámetros
OUTER
Si
OUTERse especifica, devuelve NULL si una matriz o asignación de entrada está vacía o tiene el valor de NULL.-
Una función de generador (EXPLODE, INLINE, etc.). Si la función no es una función de generador, Azure Databricks genera UNSUPPORTED_GENERATOR. NOT_GENERATOR.
-
Alias de
generator_function, que es opcional. -
Enumera los alias de columna de
generator_function, que se pueden usar en las filas de salida. El número de identificadores de columna debe coincidir con el número de columnas devueltas por la función del generador. Si el número de identificadores de columna no coincide con las columnas de salida del generador, Azure Databricks genera UDTF_ALIAS_NUMBER_MISMATCH.
Condiciones de error comunes
Ejemplos
> 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