Bagikan melalui


variant_explode_outer fungsi dengan nilai tabel

Berlaku untuk:ditandai cek ya Databricks SQL ditandai cek ya Databricks Runtime 15.3 ke atas

Mengembalikan sekumpulan baris dengan memanifestasikan variantExpr menggunakan semantik eksternal.

Sintaks

variant_explode_outer ( variantExpr )

Argumen

  • variantExpr: Ekspresi VARIANT , mewakili VARIANT objek atau VARIANT ARRAY.

Pengembalian

Sekumpulan baris yang terdiri dari elemen VARIANT ARRAYatau kunci dan nilai objek VARIANT. Kolom yang dihasilkan oleh variant_explode adalah:

  • pos INT
  • key STRING
  • value VARIANT.

Saat meledakkan objek VARIANT, kolom output key dan value mewakili kunci dan nilai objek. Saat meledakkan array VARIANT, output key selalu null, dan kolom value output mewakili elemen array.

Jika variantExpr adalah NULL, atau bukan VARIANT ARRAY dengan setidaknya satu elemen atau OBJECT dengan setidaknya satu bidang, satu baris NULLdiproduksi. Untuk tidak mengembalikan baris dalam hal ini, gunakan fungsi variant_explode .

Contoh

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