Delen via


variant_explode_outer table-waardefunctie

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 15.3 en hoger

Retourneert een set rijen door het uit-nesten van variantExpr met behulp van buitenste semantiek.

Syntaxis

variant_explode_outer ( variantExpr )

Argumenten

  • variantExpr: Een VARIANT expressie, die een VARIANT object of VARIANT ARRAY.

Retouren

Een set rijen die bestaan uit de elementen van de VARIANT ARRAYof de sleutels en values van het VARIANT-object. De columns die door variant_explode worden geproduceerd, zijn:

  • pos INT
  • key STRING
  • value VARIANT.

Bij het exploderen van een VARIANT-object vertegenwoordigen de uitvoer key en valuecolumns de sleutels en values van het object. Bij het uitploten van een VARIANT matrix is de uitvoer key altijd null en vertegenwoordigt de uitvoer valuecolumn de elementen van de matrix.

Als variantExpr dit het geval is NULL, of niet een VARIANT ARRAY met ten minste één element of een OBJECT met ten minste één veld, wordt één rij NULLvan s geproduceerd. Als u in dit geval geen rijen wilt retourneren, gebruikt u de functie variant_explode .

Voorbeelden

-- 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