json_tuple
表值生成器函数
适用于: Databricks SQL Databricks Runtime
以元组形式返回多个 JSON 对象。
语法
json_tuple(jsonStr, path1 [, ...] )
参数
jsonStr
:包含格式标准的 JSON 的STRING
表达式。pathN
:包含 JSON 路径表达式的STRING
字面量。
返回
由 JSON 对象组成的单个行。
如果找不到任何对象,则为该对象返回 NULL
。
适用于: Databricks Runtime 12.1 及更早版本:
json_tuple
只能作为表达式的根或跟在 LATERAL VIEW 之后放入SELECT
列表中。 将该函数放入SELECT
列表中时,同一个SELECT
列表中不得有其他生成器函数,否则会引发 UNSUPPORTED_GENERATOR.MULTI_GENERATOR。适用于: Databricks SQL Databricks Runtime 12.2 LTS 及更高版本:
从 LATERAL VIEW 子句或
SELECT
列表调用的语法已弃用。 请改为将json_tuple
作为 table_reference 调用。
示例
适用于: Databricks Runtime 12.1 及更早版本:
> SELECT json_tuple('{"a":1, "b":2}', 'a', 'b'), 'Spark SQL';
1 2 Spark SQL
> SELECT json_tuple('{"a":1, "b":2}', 'a', 'c'), 'Spark SQL';
1 NULL Spark SQL
> SELECT json_tuple('{"a":1, "b":2}', 'a', 'c'), json_tuple('{"c":1, "d":2}', 'c', 'd'), 'Spark SQL';
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
适用于: Databricks SQL Databricks Runtime 12.2 LTS 及更高版本:
> SELECT j.*, 'Spark SQL' FROM json_tuple('{"a":1, "b":2}', 'a', 'b') AS j;
1 2 Spark SQL
> SELECT j.*, 'Spark SQL' FROM json_tuple('{"a":1, "b":2}', 'a', 'c') AS j;
1 NULL Spark SQL
> SELECT j1.*, j2.*, 'Spark SQL'
FROM json_tuple('{"a":1, "b":2}', 'a', 'c') AS j1,
json_tuple('{"c":1, "d":2}', 'c', 'd') AS j2;