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 en uppsättning rader genom att ta bort kapsling av expr med numrering av positioner.
I Databricks SQL och Databricks Runtime 16.1 och senare stöder den här funktionen med namnet parameteranrop.
Syntax
posexplode(collection)
Argument
- 
              
collection: EttARRAYeller-uttryckMAP. 
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 i en matris heter pos och col.
Kolumnerna för en karta kallas pos, key och value.
Om collection är NULL skapas inga rader.
Gäller för:
 Databricks Runtime 12.1 och tidigare:posexplodekan 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 sammaSELECT-lista, eller så höjs UNSUPPORTED_GENERATOR.MULTI_GENERATOR.Gäller för:
 Databricks SQL 
 Databricks Runtime 12.2 LTS och senare:Anrop från LATERAL VIEW-satsen eller
SELECT-listan är föråldrat. Anropaposexplodei stället som en table_reference.
Exempel
              Gäller för:
 Databricks Runtime 12.1 och tidigare:
> SELECT posexplode(array(10, 20)) AS elem, 'Spark';
 0  10 Spark
 1  20 Spark
> SELECT posexplode(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
 0  1   a   Spark
 1  2   b   Spark
> SELECT posexplode(array(1, 2)), posexplode(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(array(10, 20));
 0  10
 1  20
> SELECT pos, key, value FROM posexplode(map(10, 'a', 20, 'b'));
 0  10   a
 1  22   b
> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, posexplode(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(array(1, 2)) AS p1, LATERAL posexplode(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