Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för:
 Databricks SQL 
 Databricks Runtime
Returnerar rader genom att ta bort kapsling av matrisen med numrering av positioner med hjälp OUTER av semantik.
I Databricks SQL och Databricks Runtime 16.1 och senare stöder den här funktionen med namnet parameteranrop.
Syntax
posexplode_outer(collection)
Argument
- 
              
collection: Ett MATRIS- eller MAP-uttryck. 
Returer
En uppsättning rader som består av positionen och elementen i matrisen eller nycklarna och värdena på kartan.
Kolumnerna som skapas av posexplode_outer i en matris heter pos och col.
Kolumnerna för en karta kallas pos, key och value.
Om collection är NULL, en enskild rad med NULLL:er för matrisen eller mappningsvärden.
Gäller för:
 Databricks Runtime 12.1 och tidigare:posexplode_outerkan bara placeras i listanSELECTsom rot för ett uttryck eller efter en LATERAL VIEW. När du placerar funktionen iSELECT-listan får det inte finnas någon annan generatorfunktion i sammaSELECTlista eller UNSUPPORTED_GENERATOR.MULTI_GENERATOR höjs.Gäller för:
 Databricks SQL 
 Databricks Runtime 12.2 LTS och senare:Anrop från LATERAL VIEW-satsens eller
SELECT-listan är inaktuell. Anropaposexplode_outeri stället som en table_reference.
Exempel
              Gäller för:
 Databricks Runtime 12.1 och tidigare:
> SELECT posexplode_outer(array(10, 20)) AS elem, 'Spark';
 0  10 Spark
 1  20 Spark
> SELECT posexplode_outer(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
 0  1   a   Spark
 1  2   b   Spark
> SELECT posexplode_outer(array(1, 2)), posexplode_outer(array(3, 4));
  Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
              Gäller för:
 Databricks SQL 
 Databricks Runtime 12.2 LTS och senare:
> SELECT pos, col FROM posexplode_outer(array(10, 20));
 0  10
 1  20
> SELECT pos, key, value FROM posexplode_outer(map(10, 'a', 20, 'b'));
 0  10   a
 1  22   b
> SELECT p1.*, p2.* FROM posexplode_outer(array(1, 2)) AS p1, posexplode_outer(array(3, 4)) AS p2;
 0  1  0  3
 0  1  1  4
 1  2  0  3
 1  2  1  4
-- Using lateral correlation in Databricks 12.2 and above
> SELECT p1.*, p2.* FROM posexplode_outer(array(1, 2)) AS p1, LATERAL posexplode_outer(array(3 * p1.col, 4 * p1.col)) AS p2;
 0      1  0  3
 0      1  1  4
 1      2  0  6
 1      2  1  8