variant_explode_outer table-valued – funkce

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 15.3 a novější

Vrátí sadu řádků zrušením vnořením variantExpr pomocí vnější sémantiky.

Syntaxe

variant_explode_outer ( variantExpr )

Argumenty

  • variantExprVARIANT: Výraz představující VARIANT objekt nebo VARIANT ARRAY.

Návraty

Sada řádků složená z prvků VARIANT ARRAYobjektů nebo klíčů a hodnot objektu VARIANT . Sloupce vytvořené variant_explode pomocí:

  • pos INT
  • key STRING
  • value VARIANT.

Při rozbalení objektu VARIANT představují výstup key a value sloupce klíče a hodnoty objektu. Při rozbalení VARIANT pole je výstup key vždy null a výstupní value sloupec představuje prvky pole.

Pokud variantExpr je NULLnebo není buď s alespoň jedním prvkem VARIANT ARRAY , nebo OBJECT s alespoň jedním polem, vytvoří se jeden řádek NULLs. Pokud chcete v tomto případě vrátit žádné řádky, použijte funkci variant_explode .

Příklady

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