variant_explode_outer
tabellvärdesfunktion
Gäller för: Databricks SQL
Databricks Runtime 15.3 och senare
Returnerar en uppsättning rader genom att avkapsla variantExpr
med hjälp av yttre semantik.
Syntax
variant_explode_outer ( variantExpr )
Argument
-
variantExpr
: EttVARIANT
uttryck som representerar ettVARIANT
objekt ellerVARIANT ARRAY
.
Returer
En uppsättning rader som består av elementen i VARIANT ARRAY
eller nycklar och värden för det VARIANT
objektet.
Kolumnerna som skapas av variant_explode
är:
pos INT
key STRING
-
value VARIANT
.
När ett VARIANT
objekt exploderar representerar utdata key
och value
kolumner objektens nycklar och värden.
När en VARIANT
matris exploderar är utdata key
alltid null och utdata value
kolumnen representerar elementen i matrisen.
Om variantExpr
är NULL
, eller inte är antingen ett VARIANT ARRAY
med minst ett element eller ett OBJECT
med minst ett fält, skapas en enskild rad med NULL
s.
Om du vill returnera inga rader i det här fallet använder du funktionen variant_explode .
Exempel
-- 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