Dela via


variant_explode_outer tabellvärdesfunktion

Gäller för:markerad ja Databricks SQL markerad ja 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: Ett VARIANT uttryck som representerar ett VARIANT objekt eller VARIANT ARRAY.

Returer

En uppsättning rader som består av elementen i VARIANT ARRAYeller 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 NULLs. 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