Microsoft Fabric 中图形的 GQL 标准一致性

Note

此功能目前处于公开预览状态。 此预览版在没有服务级别协议的情况下提供,不建议用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

Microsoft Fabric 中的 Graph 实现了 ISO/IEC 39075:2024 — 信息技术 — 数据库语言 — GQL 标准。 本文根据标准中定义的最小一致性和可选功能组映射图形的当前支持。 在添加功能时重新查看更新。

此参考文章适用于:

  • 企业架构师评估图形的 GQL 覆盖范围。
  • 从另一个符合 GQL 的数据库迁移查询的开发人员。
  • 工程师根据规范验证一致性声明。

如果开始使用 Fabric 中的 GQL,请参阅 GQL 语言指南

如何阅读本文

本文中的表格使用以下约定:

列名 Description
子引用功能 ID GQL 标准的标识符。 最小一致性功能使用子引用数(例如 14.4)。 可选功能使用附件 D 中的功能 ID(例如 G004 或 GQ15)。
功能功能 功能或功能的名称或说明。
Supported — 完全受支持。 部分 功能 - 支持某些子功能。 — 当前不受支持。
Notes 实现详细信息、已知约束或指向相关文档的链接。

数据模型一致性

Graph 实现 标记的属性图 模型。 下表汇总了数据模型支持。

功能 ID 功能 / 特点 支持 备注
GG02 具有封闭图形类型的图形 是的 Graph 使用定义允许的节点类型和边缘类型的封闭 图形类型
GG20 显式元素类型名称 是的 节点和边缘类型由图形类型中定义的标签名称标识。
GG23 可选元素类型键标签集 是的 元素类型的键标签集是其元素类型名称。
GH02 无目录边缘 所有边缘都是定向的。
GV11、GV12、GV24、GV31 属性值类型 是的 支持的类型:BOOL、、INT/INT64UINT64FLOAT64/DOUBLE、 。 STRING 有关完整类型引用,请参阅 GQL 值和值类型。 GV08、GV21、GV40 和 GV07 有细微差别 - 请参阅 GV 部分

最小一致性

GQL 标准(Subclause 5.3.7)将最低一致性定义为支持所有必需功能-完整的语言语法和语义不受可选功能 ID 的限制。 标准的信息性附件 H 记录了强制性功能。 根据最低一致性,实现可以声明对标准附件 D 中功能 ID 标识的零个或多个 可选功能 的支持。

除了必需功能之外,Subclause 24.2 还要求最低一致性声明包括:

  1. 至少支持功能 GC00(“自动图形填充”)或功能 GC04(“图形管理”)。 请参阅 GC 部分
  2. 符合特定 Unicode 版本的声明(不小于 13.0.0)。 图形中的字符串是具有排序规则的 UCS_BASIC
  3. 支持至少支持以下属性值类型: STRING (或VARCHAR)、 BOOL (或)、有符号BOOLEAN(或INTEGERINTFLOAT

下表汇总了图形对必需功能(按功能区域组织)的当前状态。

会话和事务管理 (Subclauses 7–8)

能力 支持 备注
7 会话管理
8 事务管理

对象表达式 (子句 11)

能力 支持 备注
11 对象表达式 <graph expression><binding table expression><object expression primary>CURRENT_GRAPH 当前不受支持。

查询语句 (子句 14)

能力 支持 备注
14.3 线性查询语句/嵌套查询规范 目前不支持嵌套查询规范。 支持基本线性语句链接。
14.4 MATCH 语句 是的 MATCH 具有模式匹配。
14.4 OPTIONAL MATCH 语句 是的 OPTIONAL MATCH 返回 NULL 不匹配的变量,而不是筛选它们。
14.9 ORDER BY 和页面语句 是的 ORDER BYOFFSETLIMIT
14.10 基元结果语句 是的 支持通过 RETURN.
14.11 RETURN 语句 是的 RETURN 具有投影、别名和 GROUP BY
14.12 SELECT 语句 请改用 RETURN

图形模式和常见元素(子元素 16)

能力 支持 备注
16.1 AT schema 子句
16.3 图形模式绑定表 是的 路径绑定和 组变量
16.4 图形模式 是的 简单的匿名模式、命名边缘模式和包含子句WHERE
16.4 节点模式 是的 (n:Label) 使用元素变量声明、标签表达式和属性规范的语法。
16.4 边缘模式(完全定向) 是的 -><--[]- 定向边缘模式。
16.4 元素属性规范 是的 {key: value} 内联属性谓词。
16.5 插入图形模式 不支持 GQL INSERT 语法。 图形数据通过 数据管理加载。
16.7 路径模式表达式 是的 具有组合和可变长度遍历的路径模式
16.7 路径串联 是的 通过顺序节点边缘节点语法的多跃点模式。
16.8 标签表达式 是的 使用 (AND)、 & (OR) 和 \| (NOT) 运算符!
16.9 路径变量引用 是的 路径变量 可以绑定和返回。
16.10 元素变量引用 是的 节点和边缘 元素变量
16.13 WHERE 字句 是的 FILTER 模式谓词中的语句和内联 WHERE
16.14 YIELD 字句
16.16 ORDER BY 字句 是的 ORDER BY with ASC/ASCENDING and DESC/DESCENDING.
16.17 排序规范列表 是的 具有排序方向的多个排序键。

谓词 (子词 19)

能力 支持 备注
19.3 比较谓词 是的 比较运算符=、、<><><=>=
19.4 EXISTS 谓语 是的 EXISTS 支持使用图形模式的谓词。
19.5 NULL 谓语 是的 IS NULLIS NOT NULL.
19.7 NORMALIZED 谓语 IS [NOT] NORMALIZED当前不支持谓词。 支持该 NORMALIZE() 函数 - 请参阅 Subclause 20.24。

值表达式和函数 (子句 20)

能力 支持 备注
20.2 值表达式主表达式 是的 文本、变量引用、属性访问和括号表达式。
20.3 值规范 部分的 支持文本和变量引用。 SESSION_USER 目前不支持动态参数规范。
20.7 CASE 表达式 是的 CASE (简单和搜索), COALESCE并且 NULLIF 受支持。
20.9 聚合函数 是的 countsumavgminmax 具有 DISTINCT/ALL 集限定符。
20.11 属性参考 是的 节点和边缘上的点表示法 属性访问
20.12 绑定变量引用 是的 表达式中的变量引用。
20.20 布尔值表达式 部分的 支持 />。 IS [NOT] TRUE/FALSE/UNKNOWN 目前不支持测试。
20.21 数值表达式 是的 算术运算符+、、-*/
20.22 数值函数 部分的 支持 char_lengthCHARACTER_LENGTH 目前不支持别名。
20.23 字符串值表达式 是的 字符串与 \|\| 运算符串联。
20.24 字符串函数 部分的 upperlowertrimLEFT/RIGHT字符串函数和支持。NORMALIZE 不支持 Unicode 大小写映射。
20.25 字节字符串函数 不支持字节字符串类型。
20.27 Datetime 值函数 是的 支持 CURRENT_DATETIME。 请参阅 分区日期/时间值
20.29 持续时间值函数 是的 支持持续时间值函数。

值类型 (子引用 24.2)

Graph 支持所有四种必需的属性值类型: BOOLSTRING带符号 INTEGER (64 位),以及 FLOAT其他类型。 有关完整类型引用,请参阅 GQL 值和值类型

词法元素(子词 21)

能力 支持 备注
21.1 名称和变量 是的 具有正向范围规则的变量绑定。 常规标识符和分隔标识符。
21.2 Literals 是的 布尔值、整数、浮点数、字符串(使用 C 样式和 SQL 样式转义)和列表NULL
21.3 令牌、分隔符、标识符 是的 标准 GQL 词法规则。

可选功能一致性

功能 ID 标识可选功能。 它以“G”开头,后跟一个组字母和数字。 以下各节按组组织功能。

G — 图形模式功能

功能 ID 功能 / 特点 支持 备注
G002 不同边缘匹配模式
G003 显式 REPEATABLE ELEMENTS 关键字 部分的 默认匹配模式行为是可重复的元素,但不支持显式 REPEATABLE ELEMENTS 关键字。
G004 路径变量 是的 支持路径变量绑定
G005 路径模式中的路径搜索前缀
G006 图形模式 KEEP 子句:路径模式前缀
G007 图形模式 KEEP 子句:路径搜索前缀
G010 显式 WALK 关键字 是的 WALK 允许匹配路径中的重复节点和边缘。
G011 高级路径模式: TRAIL 是的 TRAIL 防止重复边缘遍历。
G012 高级路径模式: SIMPLE 是的 SIMPLE 防止匹配路径中的重复节点。
G013 高级路径模式: ACYCLIC 是的 ACYCLIC 防止匹配路径中的周期。
G014 显式 PATH/PATHS 关键字
G015 所有路径搜索:显式 ALL 关键字 部分的 所有路径搜索行为都可用,但不支持显式 ALL 关键字语法。
G016 任何路径搜索
G017 所有最短的路径搜索
G018 任何最短的路径搜索
G019 计数最短路径搜索
G020 计数最短的组搜索
G030 路径多集交替
G031 路径多集交替:可变长度路径操作数
G032 路径模式联合
G033 路径模式联合:可变长度路径操作数
G035 限定路径 是的 具有语法{m,n}
G036 限定的边缘 仅支持 限定路径
G037 被问及的路径
G038 带圆括号的路径模式表达式
G039 简化的路径模式表达式:完全默认值
G041 非本地元素模式谓词 当前不支持引用当前模式元素之外的变量的非本地谓词。 支持节点和边缘填充物中的本地 WHERE 谓词。
G043 完整边缘模式 是的 具有 -><-. 的完全定向边缘模式。
G044 基本缩写边缘模式 是的 类似 ()->()()-(). 的速记模式。
G045 完整的缩写边缘模式 是的 任何方向的缩写 边缘模式快捷方式
G046 宽松拓扑一致性:相邻顶点模式
G047 宽松的拓扑一致性:简洁的边缘模式
G048 括号路径模式:子路径变量声明
G049 括号路径模式:路径模式前缀
G050 带圆括号路径模式: WHERE 子句
G051 带圆括号路径模式:非本地谓词
G060 边界图模式限定符 是的 {m,n} {m}{,n}语法。 最大上限为 8。
G061 未绑定的图形模式限定符 目前不支持无限制限定符({m,}、、*+)。 有限限定符的最大上限为 8。
G074 标签表达式:通配符标签 目前不支持通配符。
G080 简化的路径模式表达式:基本默认设置
G081 简化的路径模式表达式:完全替代
G082 简化的路径模式表达式:基本重写
G100 ELEMENT_ID 函数 是的 ELEMENT_ID 返回节点或边缘元素的唯一标识符。
G110 IS DIRECTED 谓语
G111 IS LABELED 谓语
G112 IS SOURCEIS DESTINATION 谓词
G113 ALL_DIFFERENT 谓语
G114 SAME 谓语
G115 PROPERTY_EXISTS 谓语

正式版 - 常规功能

功能 ID 功能 / 特点 支持 备注
GA01 IEEE 754 浮点操作 是的 FLOAT64 使用 IEEE 754 binary64 表示形式。 请参阅近似数值类型和查询 API 值编码
GA03 null 的显式排序 NULL 排序为最小值 ORDER BY,但当前不支持显式 NULLS FIRST/NULLS LAST 关键字。
GA04 通用比较
GA05 强制转换规范 部分的 支持 CAST(value AS target_type)。 目前不支持 Unicode 类型强制转换。 请参阅 类型转换
GA06 值类型谓词 是的 支持值类型谓词。
GA07 按放弃的绑定变量排序
GA08 具有诊断记录的 GQL 状态对象 部分的 支持使用 GQLSTATUS 代码、消息、诊断记录和原因链的状态对象。 请参阅 状态代码参考查询 API 状态对象。 完整的 GQL 状态代码覆盖率尚未完成。
GA09 路径比较

GB — 词法功能

功能 ID 功能 / 特点 支持 备注
GB01 长标识符
GB02 双减号注释 是的 -- 行注释。
GB03 双实心图注释 是的 // 行注释和 /* */ 阻止注释。

GC - 目录管理功能

功能 ID 功能 / 特点 支持 备注
GC01 图形架构管理
GC02 图形架构管理: IF [NOT] EXISTS
GC03 图形类型: IF [NOT] EXISTS
GC04 图形管理 部分的 CREATE GRAPH 支持关闭的图形类型。 GQL 不支持 DROP GRAPH。 请改用 Fabric UI 或 REST API
GC05 图形管理: IF [NOT] EXISTS

GD — 数据修改功能

功能 ID 功能 / 特点 支持 备注
GD01 可更新的图形 通过数据管理加载和刷新图形数据,而不是通过 GQL INSERT/SET/DELETE 语句加载和刷新图形数据。
GD02 图形标签集更改
GD03 DELETE 语句:子查询支持
GD04 DELETE 语句:简单表达式支持

GE — 表达式功能

功能 ID 功能 / 特点 支持 备注
GE01 图形引用值表达式
GE02 绑定表引用值表达式
GE03 表达式中变量的 Let-binding 是的 LET 变量绑定的语句。
GE04 图形参数
GE05 绑定表参数
GE06 路径值构造 是的 PATH [node, edge, node] 用于生成路径值的构造函数。
GE07 布尔 XOR 是的 使用 XOR 运算符进行独占解禁。
GE08 引用参数
GE09 水平聚合 是的 从可变长度模式对组列表变量进行水平聚合

GF — 函数功能

功能 ID 功能 / 特点 支持 备注
GF01 增强型数值函数 absmodfloorceilsqrt 当前不受支持。
GF02 三角函数
GF03 对数函数
GF04 增强的路径函数 是的 elements(path)path_length(path)nodes(path)edges(path) 受支持。
GF05 多字符 TRIM 函数
GF06 显式 TRIM 函数 TRIM 不支持带有剪裁规范语法(例如) TRIM('_' FROM '_x')的剪裁规范语法。 基本 trim(string) 功能作为必需功能受支持。
GF07 字节字符串 TRIM 函数 不支持字节字符串类型。
GF10 高级聚合函数:常规集函数 部分的 collect_list 并且 collect_any 受支持。 stddev_popstddev_samp当前 product 不受支持。
GF11 高级聚合函数:二进制集函数 percentile_cont 目前 percentile_disc 不受支持。
GF12 CARDINALITY 函数 请改用 size(list)
GF13 SIZE 函数 是的 size(list) 返回列表中的元素数。
GF20 排序键中的聚合函数

GG — 图形类型功能

功能 ID 功能 / 特点 支持 备注
GG01 具有打开的图形类型的图形 仅支持关闭的图形类型。
GG02 具有封闭图形类型的图形 是的 默认值。 图形类型定义允许的节点和边缘类型。 请参阅 GQL 图形类型
GG03 图形类型内联规范 是的 节点和边缘类型在图形类型定义中内联指定。
GG04 图形类型,如图形
GG05 来自图形源的图形
GG20 显式元素类型名称 是的 标签用作元素类型名称。
GG21 显式元素类型键标签集
GG22 元素类型键标签集推理
GG23 可选元素类型键标签集 是的 键标签集是元素类型名称。
GG24 宽松的结构一致性
GG25 宽松键标签为边缘类型设置唯一性
GG26 宽松的属性值类型一致性

GL — 文本功能

功能 ID 功能 / 特点 支持 备注
GL01 十六进制文本
GL02 八进制文本
GL03 二进制文本
GL04 不带后缀的常见表示法中的精确数字 是的 整数文本,如 123456. 查看 确切的数字类型
GL05 带有后缀的精确数字 是的 具有类型后缀的整数文本。
GL06 带后缀的科学表示法中的精确数字
GL07 带后缀的通用表示法中的近似数字 是的 例如,12.45f。 请参阅 近似数值类型
GL08 带后缀的科学表示法中的近似数字 是的 带有浮点文本后缀的科学表示法。
GL09 可选的浮点数后缀
GL10 可选双号后缀
GL11 选择退出字符转义
GL12 SQL 日期/时间格式 是的 ISO 8601 格式至 ZONED_DATETIME('...'). 请参阅 分区日期/时间值

GP — 过程功能

支持 CALL 内联过程语句 (GP01)。 目前不支持其他过程功能(GP02–GP18),包括 CALL 命名过程、过程局部变量定义和过程参数。

GQ — 查询组合功能

功能 ID 功能 / 特点 支持 备注
GQ01 USE graph 子句
GQ02 复合查询: OTHERWISE
GQ03 复合查询: UNION 部分的 支持 UNION ALLUNION DISTINCT 当前不受支持。
GQ04 复合查询: EXCEPT DISTINCT
GQ05 复合查询: EXCEPT ALL
GQ06 复合查询: INTERSECT DISTINCT
GQ07 复合查询: INTERSECT ALL
GQ08 FILTER 语句 是的 FILTER with WHERE keyword.
GQ09 LET 语句 是的 LET 用于计算变量。
GQ10 FOR 语句:列表值支持 是的 具有列表值支持的常规 FOR 语句。
GQ11 FOR 声明: WITH ORDINALITY
GQ12 ORDER BY 和 page 语句: OFFSET 子句 是的 OFFSET (也称为别名 SKIP)。
GQ13 ORDER BY 和 page 语句: LIMIT 子句 是的 LIMIT
GQ14 排序键中的复杂表达式
GQ15 GROUP BY 字句 是的 RETURN with GROUP BY.
GQ16 排序键中的预投影别名
GQ17 以元素方式分组变量操作 是的 支持 通过水平聚合
GQ18 标量子查询 目前不支持标量子查询。
GQ19 Graph 模式 YIELD 子句
GQ20 使用高级线性组合 NEXT
GQ21 OPTIONAL:多个 MATCH 语句 是的 支持 OPTIONAL MATCH
GQ22 EXISTS 谓词:多个 MATCH 语句
GQ23 FOR 语句:绑定表支持
GQ24 FOR 声明: WITH OFFSET

GS - 会话管理功能

目前不支持 GQL 会话管理功能(GS01–GS16)。

GT — 事务管理功能

目前不支持 GQL 事务管理功能(GT01–GT03)。

GV — 值类型功能

功能 ID 功能 / 特点 支持 备注
GV01 8 位无符号整数
GV02 8 位有符号整数
GV03 16 位无符号整数
GV04 16 位有符号整数
GV05 小无符号整数
GV06 32 位无符号整数
GV07 32 位有符号整数 INT32 不支持作为 GQL 值类型。
GV08 常规无符号整数 是的 UINT 类型。
GV09 指定的整数数精度
GV10 大无符号整数
GV11 64 位无符号整数 是的 UINT64
GV12 64 位有符号整数 是的 INT64
GV13 128 位无符号整数
GV14 128 位有符号整数
GV15 256 位无符号整数
GV16 256 位有符号整数
GV17 十进制数字
GV18 小有符号整数
GV19 大有符号整数
GV20 16 位浮点数
GV21 32 位浮点数 FLOAT 在图形别名 FLOAT64 (64 位)中,而不是 FLOAT32。 请参阅 近似数值类型
GV22 指定的浮点数精度
GV23 浮点类型名称同义词 是的 DOUBLEFLOATFLOAT64 所有指定相同的类型。
GV24 64 位浮点数 是的 DOUBLE / FLOAT64.
GV25 128 位浮点数
GV26 256 位浮点数
GV30 指定的字符串最小长度
GV31 指定的字符串最大长度 是的 STRING 类型。
GV32 指定的字符串固定长度
GV35 字节字符串类型
GV36 指定的字节字符串最小长度
GV37 指定的字节字符串最大长度
GV38 指定的字节字符串固定长度
GV39 时态类型:date、local datetime 和 local time 不支持 DATELOCAL DATETIMELOCAL TIME。 仅支持 ZONED DATETIME
GV40 时态类型:区域日期时间与区域时间 部分的 支持 ZONED DATETIMEZONED TIME 当前不受支持。
GV41 临时类型:持续时间 是的 支持持续时间类型。
GV45 记录类型 是的 支持记录构造函数语法。
GV46 已关闭的记录类型
GV47 打开记录类型 是的 支持打开记录类型。
GV48 嵌套记录类型
GV50 列出值类型 是的 LIST<element_type>。 支持嵌套列表类型(LIST<LIST<type>>)。 列表不能包含混合类型。
GV55 路径值类型 是的 PATH 匹配路径的类型。
GV60 图形引用值类型
GV61 绑定表引用值类型
GV65 动态联合类型
GV66 打开动态联合类型 是的 ANY 支持值类型。
GV67 关闭的动态联合类型
GV68 动态属性值类型
GV70 非材料值类型 是的 NULLNOTHING 类型。
GV71 非材料值类型:null 类型 是的 NULL 是每个可以为 null 的值类型的成员。
GV72 非材料值类型:空类型 是的 NOTHING / NULL NOT NULL.
GV90 显式值类型可为 null 性 是的 NOT NULL 所有类型的语法都受支持。

GH — 其他功能

功能 ID 功能 / 特点 支持 备注
GH01 外部对象引用
GH02 无目录边缘模式 图形需要定向边缘。 无论方向如何,任何定向模式(-[]-)都根据连接进行匹配。

尚不支持的功能

目前不支持以下显著功能。 有关完整列表,请参阅表中标记为 “否” 的任何行。

  • SELECT语句 (Subclause 14.12) - 请改用RETURN
  • NEXT 高级线性组合关键字 (GQ20)
  • UNION DISTINCT 语句 (GQ03) - UNION ALL 受支持
  • 未绑定的图形模式限定符:{m,}、、 *+(G061)
  • 所有最短、任何和计数的路径搜索 (G016–G020)
  • 标量子查询 (GQ18)
  • 增强型数值、三角和对数函数(GF01–GF03)
  • EXCEPTINTERSECT 语句 (GQ04–GQ07)
  • OTHERWISE 语句 (GQ02)
  • GQL INSERT/SET/DELETE 语句 (GD01) - 改用数据管理
  • 会话管理和事务命令 (Subclauses 7–8)