半结构化函数
本节提供了 Databend 中半结构化数据函数的参考信息。
基本操作
解析和验证
- PARSE_JSON: 将 JSON 字符串解析为 variant 值
- CHECK_JSON: 验证字符串是否为有效的 JSON
对象访问和提取
- GET: 通过键从 JSON 对象中获取值
- GET_PATH: 通过路径从 JSON 对象中获取值
- GET_IGNORE_CASE: 获取不区分大小写的键的值
- OBJECT_KEYS: 返回 JSON 对象的键
- JSON_OBJECT_KEYS: 将 JSON 对象的键作为数组返回
类型检查和转换
- JSON_TYPEOF: 返回 JSON 值的类型
- AS_TYPE: 将 JSON 值转换为指定的 SQL 类型
- JSON_TO_STRING: 将 JSON 值转换为字符串
- IS_OBJECT: 检查 JSON 值是否为对象
- IS_ARRAY: 检查 JSON 值是否为数组
- IS_STRING: 检查 JSON 值是否为字符串
- IS_INTEGER: 检查 JSON 值是否为整数
- IS_FLOAT: 检查 JSON 值是否为浮点数
- IS_BOOLEAN: 检查 JSON 值是否为布尔值
- IS_NULL_VALUE: 检查 JSON 值是否为 null
构建和修改
JSON 对象操作
- JSON_OBJECT: 从键值对创建 JSON 对象
- JSON_OBJECT_INSERT: 将值插入 JSON 对象
- JSON_OBJECT_DELETE: 从 JSON 对象中删除键
- JSON_OBJECT_PICK: 使用选定的键创建一个新对象
- JSON_STRIP_NULLS: 从 JSON 对象中删除 null 值
- JSON_OBJECT_KEEP_NULL: 创建一个保留 null 值的 JSON 对象
JSON 数组操作
- JSON_ARRAY: 从输入值创建 JSON 数组
- JSON_ARRAY_INSERT: 将值插入 JSON 数组
- JSON_ARRAY_DISTINCT: 返回具有不同元素的数组
- FLATTEN: 将嵌套数组展平为单个数组
高级查询和转换
路径查询
- JSON_PATH_EXISTS: 检查 JSON 路径是否存在
- JSON_PATH_QUERY: 使用路径表达式查询 JSON 数据
- JSON_PATH_QUERY_FIRST: 从路径查询返回第一个匹配项
- JSON_PATH_QUERY_ARRAY: 将查询结果作为 JSON 数组返回
- JSON_EXTRACT_PATH_TEXT: 从 JSON 路径提取文本
- JSON_PATH_MATCH: 将 JSON 数据与路径表达式进行匹配
- JQ: 提供类似 jq 的 JSON 处理功能
数组转换
- JSON_ARRAY_MAP: 将函数映射到数组元素
- JSON_ARRAY_FILTER: 使用条件过滤数组元素
- JSON_ARRAY_TRANSFORM: 使用表达式转换数组元素
- JSON_ARRAY_APPLY: 将函数应用于每个数组元素
- JSON_ARRAY_REDUCE: 将数组缩减为单个值
集合操作
- JSON_ARRAY_INTERSECTION: 返回数组之间的公共元素
- JSON_ARRAY_EXCEPT: 返回第一个数组中但不在第二个数组中的元素
- JSON_ARRAY_OVERLAP: 检查数组是否具有公共元素
对象转换
- JSON_MAP_FILTER: 过滤 JSON 对象中的键值对
- JSON_MAP_TRANSFORM_KEYS: 转换 JSON 对象中的键
- JSON_MAP_TRANSFORM_VALUES: 转换 JSON 对象中的值
扩展和格式化
- JSON_ARRAY_ELEMENTS: 将 JSON 数组扩展为一组行
- JSON_EACH: 将最外层的 JSON 对象扩展为键值对
- JSON_PRETTY: 使用缩进格式化 JSON 以提高可读性