图形查询语言 (GQL) (预览版)

适用于:✅Azure 数据资源管理器

使用图形查询语言(GQL)可以使用标准化的图形模式匹配。 GQL 遵循图形数据库查询的 ISO GQL 标准

注释

GQL 支持处于预览状态。 功能和语法可能会根据反馈和正在进行的开发而变化。

介绍

图形查询语言(GQL)是查询图形数据库的新兴 ISO 标准。 GQL 允许对图形模式匹配使用类似于 SQL 的语法,因此可以更轻松地分析数据中的关系。 本文介绍如何使用 GQL、其优点和关键功能。

GQL 提供标准化的图形模式匹配功能,用于使用 ISO 标准语法分析数据中的关系。

入门指南

若要使用 GQL,需要:

  • 图形数据源,它是 图形模型 或返回以 生成图形 运算符结尾的暂时性图形的函数(请参阅步骤 1)。
  • 设置特定的客户端请求属性(请参阅步骤 2)。

步骤 1:创建图形引用

在使用 GQL 之前,请创建图形数据源。 本文使用内存中生成图形运算符,但我们建议对生产方案使用图形快照。

.create-or-alter function G_doc() {
    let nodes = datatable(id:string, lbl:string, name:string, properties:dynamic)
    [
        "p1","Person","Alice",dynamic({"age": 25}),
        "p2","Person","Bob",dynamic({"age": 30}),
        "p3","Person","Carol",dynamic({"age": 28}),
        "p4","Person","David",dynamic({"age": 35}),
        "p5","Person","Emma",dynamic({"age": 26}),
        "c1","Company","TechCorp",,
        "c2","Company","DataSoft",,
        "c3","Company","CloudInc",,
        "ct1","City","Seattle",,
        "ct2","City","Portland",,
        "ct3","City","San Francisco",
    ];
    let edges = datatable(source:string, target:string, lbl:string, since:int)
    [
        "p1","c1","works_at",2020,
        "p2","c1","works_at",2022,
        "p3","c2","works_at",2023,
        "p4","c3","works_at",2021,
        "p5","c1","works_at",2024,
        "p1","ct1","located_at",2019,
        "p2","ct1","located_at",2021,
        "p3","ct2","located_at",2022,
        "p4","ct3","located_at",2020,
        "p5","ct2","located_at",2023,
        "c1","ct1","located_at",2015,
        "c2","ct2","located_at",2018,
        "c3","ct3","located_at",2017,
        "p1","p2","knows",2019,
        "p2","p3","knows",2021,
        "p3","p4","knows",2022,
        "p4","p5","knows",2023,
        "p1","p4","likes",2020,
        "p4","p1","likes",2020,
        "p5","p2","likes",2022
    ];
    edges
    | make-graph source --> target with nodes on id
}

步骤 2:配置客户端请求属性

若要运行 GQL 查询,请设置三个客户端请求属性。 使用指令通过 SDK、API 或直接在 Kusto 资源管理器Azure 数据资源管理器 Web UI 中设置这些属性。

设置客户端请求属性

重要

在运行 GQL 查询之前,请单独运行每个指令。 指令为 GQL 执行设置查询环境。

#crp query_language=gql
#crp query_graph_reference=G_doc()

若要在 GQL 中使用标签,请设置标签列名称:

#crp query_graph_label_name=lbl

小窍门

标签在 GQL 中是可选的,但它们通常用于按类型筛选节点和边缘。 设置标签列名称以在 GQL 查询中使用标签。

以编程方式设置客户端请求属性

对于编程访问,请设置以下客户端请求属性:

  • query_language:设置为 "gql".
  • query_graph_reference:设置为图形函数名称(例如 "G_doc()")。
  • query_graph_label_name:设置为标签列名称(例如 "lbl")。

步骤 3:运行 GQL 查询

完成设置后,使用标准 GQL 语法运行 GQL 查询。 使用以下示例浏览基本和高级 GQL 功能。

例子

在此处查找模式匹配和标签的基本示例。 有关更复杂的示例,请参阅 GQL 查询模式、示例和常见方案。 有关参考文档(包括基础知识和函数详细信息),请参阅 Graph 查询语言(GQL)参考

基本模式匹配的示例 GQL 查询

MATCH (n)-[e]->(n2)
RETURN COUNT(*) as CNT

输出

下表显示了查询的结果。

CNT
20

带有标签的示例 GQL 查询

MATCH (p:Person)-[e]->(target)
RETURN p.name, target.name, e.lbl
ORDER BY p.name, target.name
LIMIT 2

输出

下表显示了查询的结果。

p.name target.name e.lbl
爱丽丝 鲍勃 知道
爱丽丝 大卫 喜欢