JSON路径表达式

适用于:勾选“是”砖的SQL勾选“是”砖运行时

路径表达式用于从JSON字符串中提取值:操作符

语法

标识符|||指数标识符|||指数...

周围的括号而且指数是实际的括号,不表示可选语法。

参数

  • 标识符: JSON字段的标识符,不区分大小写。

  • :一个带括号区分大小写的STRING字面值,用于标识JSON字段。

  • :标识JSON数组中的所有元素。

  • 指数:一个整数字面值,用于标识基于0的JSON数组中的特定元素。

返回

一个字符串。

当JSON字段存在未分隔符时值,您将收到一个SQL值,而不是文本值。

你可以使用::操作符将值转换为基本数据类型。

使用from_json函数将嵌套结果转换为更复杂的数据类型,如数组或结构。

笔记

如果名称不包含空格或特殊字符,并且在不同情况下没有相同名称的字段,则可以使用未分隔符标识符来引用JSON字段。

如果在不同的情况下没有相同名称的字段,则使用分隔标识符。

始终可以使用符号,但要求您完全匹配字段的大小写。

如果Databricks SQL不能唯一地识别一个字段,则返回错误。如果没有找到匹配的任何字段Databricks SQL返回

例子

下面的示例使用语句中创建的数据示例数据

使用标识符和分隔符提取

>选择老板老板:【“主人”),:【“主人”store_data艾米艾米艾米—使用反引号转义特殊字符。使用反勾号时引用不区分大小写。使用括号区分大小写。>选择邮政编码代码邮政编码代码:【“fb: testid”store_data94025940251234

提取嵌套字段

使用点表示法>选择商店自行车store_data{"价格":19.95,"颜色":"红色"}——使用括号>选择:【“存储”] [“自行车”store_data{"价格":19.95,"颜色":"红色"}

从数组中提取值

——索引元素> SELECT raw:store.fruit[0], raw:store.fruit[1] FROM store_data;'{"weight":8, "type":"apple"}' '{"weight":9, "type":"pear"}'——从数组>中提取子字段SELECT raw:store.book[*]。isbn FROM store_data;'[null, "0-553-21311-3", "0-395- 19995 -8"]'——访问数组中的数组或数组中的结构> SELECT raw:存储。篮子[*],生:商店。篮子[*][0] first_of_baskets, raw:store.basket[0][*] first_basket, raw:store.basket[*][*] all_elements_flattened, raw:store.basket[0][2].b subfield FROM store_data; basket first_of_baskets first_basket all_elements_flattened subfield ---------------------------- ------------------ --------------------- --------------------------------- ---------- [ [ [ [1,2,{"b":"y","a":"x"},3,4,5,6] y [1,2,{"b":"y","a":"x"}], 1, 1, [3,4], 3, 2, [5,6] 5 {"b":"y","a":"x"} ] ] ]

空的行为

>选择”{零}“关键”:“关键sql_null”{“关键”:“零”}’关键真正的

把值

——price返回double类型,而不是string类型>选择商店自行车价格::store_data1995——使用from_json转换为更复杂的类型>选择from_json商店自行车'价格双倍,颜色字符串'自行车store_data{"价格":19.95,"颜色":"红色"}——返回的列是字符串数组的数组>选择from_json商店篮子),“数组<数组<字符串> >”篮子store_data”((“1”、“2”、“{\ b \”:\“y \”,\“\”,\“x \ "})”,(“3”、“4”)(“5”、“6”)]“

示例数据

创建表格store_data作为选择”{“存储”:{“水果”:[{“重量”:8,“类型”:“苹果”},{“重量”:9,“类型”:“梨”}),“篮子”:((1、2、{“b”:“y”,“一个”:“x”}),(3、4),(5、6)),“书”:(奈杰尔•里斯”“作者”:“标题:“世纪名言”,“类别”:“引用”,“价格”:8.95},“作者”:“赫尔曼·麦尔维尔”,“标题”:“白鲸记”,“类别”:“小说”,“价格”:8.99,“isbn”:“0-553-21311-3”},“作者”:“J。r。r。托尔金"“标题”:“指环王”,“类别”:“小说”,“读者”:({“年龄”:25岁的“名称”:“bob”},{“年龄”:26日,“名字”:“杰克”}),“价格”:22.99,“isbn”:“0-395-19395-8”),“自行车”:{“价格”:19.95,“颜色”:“红色”},“老板”:“艾米”,“邮政编码”:“94025”,“fb: testid”:“1234”}'作为