- 类别:
半结构化和结构化数据函数 (提取)
GET_PATH、:¶
使用路径名从半结构化数据中提取值。
GET_PATH 是 GET 的变体;它将 VARIANT、OBJECT 或 ARRAY 列名用作第一个实参,并根据作为第二个实参提供的路径名提取字段或元素的值。
语法¶
实参¶
column_identifier计算结果为 VARIANT、OBJECT 或 ARRAY 列的表达式。
path_name计算结果为 VARCHAR 值的表达式。此值指定要提取的字段或元素的路径。
对于 结构化类型,必须指定字符串常量。
返回¶
返回值是 ARRAY 的指定元素,或者是对应于 OBJECT 中键值对的指定键的值。
如果输入对象是半结构化 OBJECT、ARRAY 或 VARIANT,则该函数返回 VARIANT。该值的数据类型是 VARIANT,因为:
在 ARRAY 值中,每个元素都是 VARIANT 类型。
在 OBJECT 值中,每个键值对的值都是 VARIANT 类型。
如果输入对象是 结构化 OBJECT、结构化 ARRAY或 MAP,该函数返回为该对象指定的类型的值。
例如,如果输入对象的类型是 ARRAY(NUMBER),则该函数返回 NUMBER 值。
使用说明¶
GET_PATH 等价于 GET 函数链。如果路径名与任何元素均不对应,则返回 NULL。
路径名语法是标准 JavaScript 表示法;它由字段名称(标识符)和句点(例如
.)以及索引运算符(例如[<index>])连接而成:第一个字段名称不需要指定前导句点。
索引运算符中的索引值可以是非负十进制数(用于数组),也可以是加单引号或双引号的字符串字面量(用于对象字段)。
有关更多详细信息,请参阅 查询半结构化数据。
GET_PATH 还支持使用
:字符作为提取运算符的语法快捷方式,该字符将列名(可以包含句点)与路径说明符分开。为了保持语法一致性,路径表示法还支持 SQL 风格的加双引号的标识符,并将
:用作路径分隔符。使用
:运算符时,任何整数或字符串子表达式都可以包含在[]中。
示例¶
创建具有 VARIANT 列的表并插入数据。使用 PARSE_JSON 函数插入 VARIANT 数据。VARIANT 值包含嵌套 ARRAY 值和 OBJECT 值。
在每行中从 array2 提取 id3 值:
使用 : 运算符,在每行中从 array2 提取相同的 id3 值:
此示例与前面的示例相同,但使用了 SQL 样式的加双引号的标识符:
在每行中从嵌套的 OBJECT 值中提取 object_inner_key1a 值:
使用 : 运算符提取相同的 object_inner_key1a 值:
此示例与前面的示例相同,但使用了 SQL 样式的加双引号的标识符: