Partager via


variant_explode_outer fonction table

S’applique à : coche pour oui Databricks SQL case marquée oui 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 : expression VARIANT représentant un objet VARIANT ou VARIANT 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