Freigeben über


variant_explode_outer-Tabellenwertfunktion

Gilt für: Häkchen gesetzt ja Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime 15.3 und höher

Gibt Zeilen zurück, indem die Schachtelung von variantExpr mithilfe von äußerer Semantik aufgehoben wird.

Syntax

variant_explode_outer ( variantExpr )

Argumente

  • variantExpr: Ein VARIANT-Ausdruck, der ein VARIANT-Objekt oder eine VARIANT ARRAY-Instanz darstellt.

Gibt zurück

Zeilen, die aus den Elementen der VARIANT ARRAY-Instanz oder den Schlüsseln und Werten des VARIANT-Objekts bestehen. Die von variant_explode erzeugten Spalten sind:

  • pos INT
  • key STRING
  • value VARIANT.

Beim Explodieren eines VARIANT-Objekts stellen die Ausgabespalten key und value die Schlüssel und Werte des Objekts dar. Beim Explodieren eines VARIANT-Arrays ist die key-Ausgabe immer null, und die Ausgabespalte value stellt die Elemente des Arrays dar.

Wenn variantExpr NULL ist oder kein VARIANT ARRAY mit mindestens einem Element oder kein OBJECT mit mindestens einem Feld, wird eine einzelne Zeile mit NULL erzeugt. Wenn in diesem Fall keine Zeilen zurückgegeben werden sollen, verwenden Sie die variant_explode-Funktion.

Beispiele

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