次の方法で共有


variant_explode テーブル値関数

適用対象:check marked yes Databricks SQL 「はい」のチェック マーク Databricks Runtime 15.3 以上

input の入れ子を解除することにより、一連の行を返します。

Databricks Runtime 16.1 以降では、この関数は名前付きパラメーター呼び出し をサポートしています。

構文

variant_explode ( input )

引数

  • variantExpr: VARIANT オブジェクトまたは VARIANT を表す VARIANT ARRAY 式。

返品

VARIANT ARRAY の要素、または VARIANT オブジェクトのキーと値で構成される行のセット。 variant_explode によって生成される列は次のとおりです。

  • pos INT
  • key STRING
  • value VARIANT=

VARIANT オブジェクトを分解する場合、出力 key および value 列はオブジェクトのキーと値を表します。 VARIANT 配列を分解する場合、出力 key は常に NULL となり、出力 value 列は配列の要素を表します。

inputNULL であるか、VARIANT ARRAYVARIANT オブジェクトでない場合、行は生成されません。 この場合、NULL 値の単一行を生成するには、variant_explode_outer 関数を使用します。

-- Simple example
> SELECT *
   FROM variant_explode(parse_json('[1, "a", {"b": "hello"}]'));
  pos  key  value
  ---  ---- -------------
    0  NULL 1
    1  NULL "a"
    2  NULL {"b":"hello"}

> SELECT *
    FROM variant_explode(parse_json('{"foo":1,"bar":"hello"}'));
  pos  key  value
  ---  ---- -------------
    0  bar  "hello"
    1  foo  1

-- Using lateral correlation
> SELECT t.value AS outer, u.value AS inner
    FROM variant_explode(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