適用於:
Databricks SQL
Databricks Runtime 15.3 和更新版本
使用外部語意,透過非巢狀 variantExpr 傳回一組數據列。
語法
variant_explode_outer ( variantExpr )
引數
-
variantExprVARIANT:表達式,表示VARIANT物件或VARIANT ARRAY。
退貨
由 VARIANT ARRAY元素或 VARIANT 物件的鍵和值組成的數據列集合。
variant_explode產生的欄位如下:
pos INTkey STRING-
value VARIANT。
當 VARIANT 物件爆炸時,輸出 key 和 value 數據行代表物件的索引鍵和值。
當分解 VARIANT 陣列時,輸出 key 一律為 null,而輸出 value 數據行代表陣列的元素。
如果 variantExpr 是 NULL,或者不是一個有至少一個元素的 VARIANT ARRAY 或至少有一個字段的 OBJECT,則會產生單列 NULL。
若要在此案例中不傳回任何數據列,請使用 variant_explode 函式。
範例
-- 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