使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于:✅ Azure 数据资源管理器
openCypher 是用于查询属性图形数据库的 open-source 规范。 可以使用声明性模式匹配语法对 KQL 图形语义运行 openCypher 查询,以便直观地表达复杂的图形模式和关系。
入门
若要使用 openCypher,需要一个图形数据源(建议用于生产方案)或返回暂时性 图形 的函数(以 生成图形 运算符结尾)。
先决条件
创建图形并设置用于查询的图形引用。 请按照此处所述的步骤进行操作。
Example
查找所有在电影中表演的演员。
MATCH (n :Person)-[e :ACTED_IN]->(m: Movie)
WHERE m.Title starts with 'T1'
RETURN n.Name as actorName, m.Title as movieTitle
ORDER BY actorName desc
LIMIT 2
输出
| actorName | movieTitle |
|---|---|
| 卢宁 | T1 |
| Kevin | T1 |
有关更多 openCypher 示例,请参阅 openCypher 规范。
局限性
查询结构:所有查询都必须以
MATCH语句开头。不支持任何图形修改操作:不支持更改图形结构(例如
CREATE、MERGE、DELETE、SET、REMOVE)DETACH的操作。 对所有图形创建、修改和管理任务使用 KQL。不支持的子句:
EXISTS、、SETCALL。不支持的函数和聚合:
percentileDisc()、、percentileCont()、stDev()stDevP()、properties()type()、range()exists()startNode()endNode()tail()replace()split()substring()rand()round()sign()、。atan2()e()pi()模式匹配:
MATCH并且OPTIONAL MATCH仅支持节点实体,而不支持边缘模式。 对于每个单子MATCH句的多个序列,仅支持单个连接的组件模式。实体等效性检查:不支持使用节点或关系等运算符(
=<>例如,MATCH (n)-[]-(m) WHERE n <> m)检查实体等效性。 请改用id()函数或显式字段比较,例如n.id <> m.id。不同:不支持直接应用于
DISTINCT实体。 或者,将实体转换为字符串,例如:MATCH p = (n :Person) RETURN DISTINCT tostring(p)
备注
注释
性能改进建议:
为了获得更好的性能,请尽可能少地使用子 MATCH 句,理想情况下每个查询一个子句。 单个 MATCH 子句仍可根据需要保持复杂:该模式可能非常复杂,并且可以包括连接的组件、可变长度边缘等。
- 保留关键字:某些 openCypher 关键字不能用作查询中的标识符,某些保留关键字并不立即明显。 如果图形数据具有与 openCypher 保留关键字冲突的属性名称,请在图形架构中使用不同的属性名称或重命名它们以避免分析冲突。
重要
设计图形架构时,某些常见属性名称可能与 openCypher 保留关键字冲突。 请避免或重命名这些属性名称。 最佳做法是转义这些名称, backticks 并添加前缀或后缀,例如 _。
- 时间和时区:引擎以 UTC 方式运行。 日期/时间文本必须使用适当的格式;仅支持 UTC 时区。