variant_explode_outer
fonction table
S’applique à : Databricks SQL Databricks Runtime 15.3 et versions ultérieures
Retourne un ensemble de lignes en annulant l’imbrication de variantExpr
à l’aide d’une sémantique externe.
Syntaxe
variant_explode_outer ( variantExpr )
Arguments
variantExpr
: expressionVARIANT
représentant un objetVARIANT
ouVARIANT ARRAY
.
Retours
Ensemble de lignes composées des éléments du VARIANT ARRAY
ou des clés et des valeurs de l’objet VARIANT
.
Les colonnes produites par variant_explode
sont les suivantes :
pos INT
key STRING
value VARIANT
.
Lors de l’explosion d’un objet VARIANT
, les colonnes key
et value
de sortie représentent les clés et les valeurs de l’objet.
Lors de l’explosion d’un tableau VARIANT
, le key
de sortie est toujours Null, et la colonne de sortie value
représente les éléments du tableau.
Si variantExpr
est NULL
, ou n’est ni un élément VARIANT ARRAY
avec au moins un élément ni un champ OBJECT
avec au moins un champ, une seule ligne de NULL
est produite.
Pour ne retourner aucune ligne dans ce cas, utilisez la fonction variant_explode.
Exemples
-- 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