variant_explode_outer
-Tabellenwertfunktion
Gilt für: Databricks SQL Databricks Runtime 15.3 und höher
Gibt Zeilen zurück, indem die Schachtelung von variantExpr
mithilfe von äußerer Semantik aufgehoben wird.
Syntax
variant_explode_outer ( variantExpr )
Argumente
variantExpr
: EinVARIANT
-Ausdruck, der einVARIANT
-Objekt oder eineVARIANT ARRAY
-Instanz darstellt.
Gibt zurück
Zeilen, die aus den Elementen der VARIANT ARRAY
-Instanz oder den Schlüsseln und Werten des VARIANT
-Objekts bestehen.
Die von variant_explode
erzeugten Spalten sind:
pos INT
key STRING
value VARIANT
.
Beim Explodieren eines VARIANT
-Objekts stellen die Ausgabespalten key
und value
die Schlüssel und Werte des Objekts dar.
Beim Explodieren eines VARIANT
-Arrays ist die key
-Ausgabe immer null, und die Ausgabespalte value
stellt die Elemente des Arrays dar.
Wenn variantExpr
NULL
ist oder kein VARIANT ARRAY
mit mindestens einem Element oder kein OBJECT
mit mindestens einem Feld, wird eine einzelne Zeile mit NULL
erzeugt.
Wenn in diesem Fall keine Zeilen zurückgegeben werden sollen, verwenden Sie die variant_explode-Funktion.
Beispiele
-- Simple example
> SELECT *
FROM variant_explode_outer(parse_json('[1, "a", {"b": "hello"}]'));
pos key value
--- ---- -------------
0 NULL 1
1 NULL "a"
2 NULL {"b":"hello"}
> SELECT *
FROM variant_explode_outer(parse_json('{"foo":1,"bar":"hello"}'));
pos key value
--- ---- -------------
0 bar "hello"
1 foo 1
-- null input
> SELECT value FROM variant_explode_outer(null) AS t(pos, key, value);
null
-- Not an array or object input
> SELECT value FROM variant_explode_outer(parse_json('123')) AS t(pos, key, value);
null
-- Using lateral correlation
> SELECT t.value AS outer, u.value AS inner
FROM variant_explode_outer(parse_json('[[1, 2], [3, 4]]')) AS t,
LATERAL variant_explode(t.value) AS u;
outer inner
----- -----
[1,2] 1
[1,2] 2
[3,4] 3
[3,4] 4