Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks SQL
Databricks Runtime
Restituisce un set di righe, rimuovendo l'annidamento di expr e applicando la numerazione delle posizioni.
In Databricks SQL e Databricks Runtime 16.1 e versioni successive questa funzione supporta invocazione di parametri denominati.
Sintassi
posexplode(collection)
Argomenti
-
collection: espressioneARRAYoMAP.
Valori restituiti
Set di righe composte dalla posizione e dagli elementi della matrice o delle chiavi e dei valori della mappa.
Le colonne generate da posexplode di una matrice sono denominate pos e col.
Le colonne per una mappa vengono denominate pos, key e value.
Se collection non viene NULL generata alcuna riga.
Si applica a:
Databricks Runtime 12.1 e versioni precedenti:posexplodepuò essere posizionato solo come radice di un'espressione nell'elencoSELECTo dopo un LATERAL VIEW. Quando si inserisce la funzione nell'elenco diSELECT, non deve essere presente alcuna altra funzione generatrice nello stesso elenco diSELECT, altrimenti viene generato l'errore UNSUPPORTED_GENERATOR.MULTI_GENERATOR.Si applica a:
Databricks SQL
Databricks Runtime 12.2 LTS e versioni successive:L'invocazione dalla clausola LATERAL VIEW o dall'elenco
SELECTè deprecata. Richiamareposexplodeinvece come table_reference.
Esempi
Si applica a:
Databricks Runtime 12.1 e versioni precedenti:
> 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
Si applica a:
Databricks SQL
Databricks Runtime 12.2 LTS e versioni successive:
> 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
Funzioni correlate
-
explodefunzione generatore con valori di tabella -
explode_outerfunzione generatore con valori di tabella -
inlinefunzione generatore con valori di tabella -
inline_outerfunzione generatore con valori di tabella -
posexplode_outerfunzione generatore con valori di tabella -
stackfunzione generatore con valori di tabella