json_tuple 表值生成器函数

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

以元组形式返回多个 JSON 对象。

语法

参数

  • jsonStr:包含格式标准的 JSON 的字符串表达式。
  • pathN:具有 JSON 路径的字符串字面量。

返回

由 JSON 对象组成的单个行。

如果找不到任何对象,则为该对象返回 NULL

  • 适用于:check marked yes Databricks Runtime 12.1 及更低版本:

    json_tuple 只能作为表达式的根或跟在 LATERAL VIEW 之后放入 SELECT 列表中。 将该函数放入 SELECT 列表中时,同一个 SELECT 列表中不得有其他生成器函数,否则会引发 UNSUPPORTED_GENERATOR.MULTI_GENERATOR

  • 适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 12.2 及更高版本:

    LATERAL VIEW 子句SELECT 列表调用的语法已弃用。 请改为将 json_tuple 作为 table_reference 调用。

示例

适用于:check marked yes 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

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 12.2 及更高版本:

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