Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime
Retourneert een set rijen door het uitpakken van expr, waarbij de posities worden genummerd.
In Databricks SQL en Databricks Runtime 16.1 en hoger ondersteunt deze functie de benoemde parameteraanroep.
Syntaxis
posexplode(collection)
Argumenten
-
collection: EenARRAYofMAPexpressie.
Retouren
Een set rijen die bestaan uit de positie en de elementen van de matrix of de sleutels en waarden van de kaart.
De kolommen die door posexplode van een matrix worden geproduceerd, hebben de naam pos en col.
De kolommen voor een kaart worden pos, key en valuegenoemd.
Als collection er NULL geen rijen worden geproduceerd.
Van toepassing op:
Databricks Runtime 12.1 en eerder:posexplodekan alleen in deSELECTlijst worden geplaatst als de wortel van een expressie of na een LATERAL VIEW. Bij het plaatsen van de functie in deSELECTlijst mag er geen andere generatorfunctie in dezelfdeSELECTlijst of UNSUPPORTED_GENERATOR zijn. MULTI_GENERATOR wordt opgevoed.Van toepassing op:
Databricks SQL
Databricks Runtime 12.2 LTS en hoger:Aanroep van de LATERAL VIEW clausule of de
SELECTlijst wordt afgeraden. Roep in plaats daarvanposexplodeaan als een table_reference.
Voorbeelden
Van toepassing op:
Databricks Runtime 12.1 en eerder:
> 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
Van toepassing op:
Databricks SQL
Databricks Runtime 12.2 LTS en hoger:
> 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