Delen via


variant_explode_outer functie met tabelwaarde

Van toepassing op:aangevinkt ja Databricks SQL aangevinkt ja Databricks Runtime 15.3 en hoger

Retourneert een set rijen door het ont-nesten van variantExpr met behulp van outer 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 waarden van het VARIANT-object. De kolommen die door variant_explode worden geproduceerd, zijn:

  • pos INT
  • key STRING
  • value VARIANT.

Wanneer u een VARIANT-object uitplot, vertegenwoordigen de uitvoerkolommen key en value de sleutels en waarden van het object. Bij het uitvouwen van een VARIANT array is de uitvoer key altijd nul en vertegenwoordigt de uitvoer value-kolom de elementen van de array.

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