Megosztás a következőn keresztül:


LATERAL VIEW záradék

A következőkre vonatkozik: jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime

Olyan generátorfüggvényekkel együtt használatos, mint EXPLODEpéldául egy egy vagy több sort tartalmazó virtuális táblázat létrehozása. LATERAL VIEW az egyes eredeti kimeneti sorokra alkalmazza a sorokat.

A Databricks SQL-ben és a Databricks Runtime 12.2-től kezdve ez a záradék elavult. Egy táblaértékű generátorfüggvényt kell meghívnia table_reference.

Syntax

LATERAL VIEW [ OUTER ] generator_function ( expression [, ...] ) [ table_identifier ] AS column_identifier [, ...]

Paraméterek

  • KÜLSŐ

    Ha OUTER meg van adva, null értéket ad vissza, ha egy bemeneti tömb/térkép üres vagy null értékű.

  • generator_function

    Generátorfüggvény (EXPLODE, INLINE stb.).

  • table_identifier

    A (nem kötelező) alias generator_function.

  • column_identifier

    A kimeneti sorokban használható oszlop aliasait sorolja generator_functionfel. Az oszlopazonosítók számának meg kell egyeznie a generátorfüggvény által visszaadott oszlopok számával.

Példák

> 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