Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime
Gibt eine Reihe von Zeilen durch Entschachtelung von expr mit Nummerierung der Positionen zurück.
In Databricks SQL sowie Databricks Runtime 16.1 und höher unterstützt diese Funktion den Aufruf benannter Parameter.
Syntax
posexplode(collection)
Argumente
-
collection: EinARRAY- oderMAP-Ausdruck.
Gibt zurück
Eine Reihe von Zeilen, die aus der Position und den Elementen des Arrays oder den Schlüsseln und Werten der Zuordnung bestehen.
Die durch den Befehl posexplode von einem Array erzeugten Spalten heißen pos und col.
Die Spalten für eine Zuordnung heißen pos, key und value.
Wenn collection den Wert NULL aufweist, werden keine Zeilen generiert.
Gilt für:
Databricks Runtime 12.1 und früher:posexplodekann nur in derSELECT-Liste als Stamm eines Ausdrucks oder nach einer LATERAL VIEW-Klausel platziert werden. Beim Platzieren der Funktion in derSELECT-Liste darf keine andere Generatorfunktion in derselbenSELECT-Liste oder vorhanden sein, da ansonsten die Fehlermeldung UNSUPPORTED_GENERATOR.MULTI_GENERATOR ausgelöst wird.Gilt für:
Databricks SQL
Databricks Runtime 12.2 LTS und höher:Der Aufruf über die LATERAL VIEW-Klausel oder
SELECT-Liste ist veraltet. Rufen Sie stattdessenposexplodeals table_reference auf.
Beispiele
Gilt für:
Databricks Runtime 12.1 und früher:
> 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
Gilt für:
Databricks SQL
Databricks Runtime 12.2 LTS und höher:
> 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
Zugehörige Funktionen
-
explodeFunktion zum Erzeugen von Tabellenwerten -
explode_outerFunktion zum Erzeugen von Tabellenwerten -
inlineFunktion zum Erzeugen von Tabellenwerten -
inline_outerFunktion zum Erzeugen von Tabellenwerten -
posexplode_outerFunktion zum Erzeugen von Tabellenwerten -
stackFunktion zum Erzeugen von Tabellenwerten