使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于: ✅ Azure 数据资源管理器
若要运行 GQL 或 openCypher 查询,需要创建一个图形,它可以是永久性的或暂时性的。
创建图形
- 对于暂时性图形,请创建一个以 生成图形 运算符结尾的函数。 根据需要设置标签。 标签数据可以是字符串列或数组列。
以下示例创建电影与人之间的关系的电影图。
.create-or-alter function G()
{
let Movies = datatable (Title: string, Description: string, Year: int, Label2: dynamic)
[
'T1', 'A movie about space', 1995, dynamic(["Movie","Survival","Adventure","Drama","History"]),
'T2', 'Romantic comedy', 2011, dynamic(["Movie","Comedy","Drama","Romance"]),
'T3', 'War film', 2020, dynamic(["Movie","Drama","History","War"]),
]
| extend Label = 'Movie';
let People = datatable (Name: string, Born: int, Label2: dynamic)
[
'Tom', 1956, dynamic(["Person","Male","BestActorAward"]),
'Kevin', 1958, dynamic(["Person","Male"]),
'Ron', 1954, dynamic(["Person","Male","BestDirectorAward"]),
'Julia', 1967, dynamic(["Person","Female","BestActressAward"]),
]
| extend Label = 'Person';
let Actions = datatable(Name: string, Movie: string, Label: string, Label2: dynamic, Role: string)
[
'Tom', 'T1', 'ACTED_IN', dynamic(["ACTED_IN"]), 'Role1',
'Kevin', 'T1', 'ACTED_IN', dynamic(["ACTED_IN"]), 'Role2',
'Ron', 'T1', 'DIRECTED', dynamic(["DIRECTED"]), 'Director',
'Tom', 'T2', 'ACTED_IN', dynamic(["ACTED_IN"]), 'Role3',
'Tom', 'T2', 'DIRECTED', dynamic(["DIRECTED"]), 'Director',
'Tom', 'T3', 'ACTED_IN', dynamic(["ACTED_IN"]), 'Role4',
];
Actions
| make-graph Name --> Movie with People on Name, Movies on Title
}
在上面的示例中,实体标签数据可以是 Label 列(单个字符串)或 Label2 列(字符串数组)。
- 对于 永久性图形,请创建图形模型和快照。
Tip
对于生产方案,建议使用图形模型快照。
例:
.create-or-alter graph_model MyGraphModel1 ```
{
"Schema": {
"Nodes": {
"Person": { "Name":"string", "Born":"int" },
"Movie": { "Title":"string", "Description":"string", "Year":"int" }
},
"Edges": {
"ACTED_IN": { "Name":"string", "Movie":"string", "Role":"string" },
"DIRECTED": { "Name":"string", "Movie":"string", "Role":"string" }
}
},
"Definition": {
"Steps": [
{
"Query": "datatable(Name:string, Born:int, Label2:dynamic)
[
'Tom', 1956, dynamic(['Male', 'BestActorAward']),
'Kevin', 1958, dynamic(['Male']),
'Ron', 1954, dynamic(['Male', 'BestDirectorAward']),
'Julia', 1967, dynamic(['Female', 'BestActressAward']),
]",
"NodeIdColumn": "Name",
"Kind": "AddNodes",
"Labels": ["Person"],
"LabelsColumn" :"Label2",
},
{
"Query": "datatable(Title:string, Description:string, Year:int, Label2:dynamic)
[
'T1', 'A movie about space', 1995, dynamic(['Survival', 'Adventure', 'Drama', 'History']),
'T2', 'Romantic comedy', 2011, dynamic(['Comedy', 'Drama', 'Romance']),
'T3', 'War film', 2020, dynamic(['Drama', 'History', 'War']),
]",
"NodeIdColumn": "Title",
"Kind": "AddNodes",
"Labels": ["Movie"],
"LabelsColumn" :"Label2",
},
{
"Query": "datatable(Name:string, Movie:string, Role:string, Label2:string)
[
'Tom', 'T1', 'Role1', 'ACTED_IN',
'Kevin', 'T1', 'Role2', 'ACTED_IN',
'Tom', 'T2', 'Role3', 'ACTED_IN',
'Tom', 'T3', 'Role4', 'ACTED_IN',
'Ron', 'T1', 'Director', 'DIRECTED',
'Tom', 'T2', 'Director', 'DIRECTED',
]",
"SourceColumn": "Name",
"TargetColumn": "Movie",
"Kind": "AddEdges",
"LabelsColumn" :"Label2",
}
]
}
}```
为模型创建快照:
.make graph_snapshot MySnapshot1 from MyGraphModel1
查询图
可以通过 SDK、API 或直接在 Kusto 资源管理器或 Azure 数据资源管理器 Web UI 中查询图形。
根据需要设置下面所述的指令,然后运行 GQL 或 openCypher 查询。
- 设置查询语言(运行以下指令):
#crp query_language=gql // or #crp query_language=opencypher
- 设置图形引用(运行以下指令):
#crp query_graph_reference=G
如果图形是模型,并且客户端是 Web UI(请运行以下指令):
#crp query_graph_reference = graph("MyGraphModel1","MySnapshot1")
如果图形是模型,并且客户端是 Kusto Explorer 桌面应用程序 (运行以下指令):
#crp query_graph_reference = 'graph("MyGraphModel1", "MySnapshot1")'
- 如果图形是暂时性的,请设置标签列名称(默认值:
Label)。 运行以下指令:
#crp query_graph_label_name = Label2
Important
在运行查询之前单独运行每个指令。
以下屏幕截图显示了已设置的三个客户端请求属性的示例:
通过桌面 UI 查询图形
可以通过 UI(默认:GQL):在 Kusto 资源管理器中,可以通过 工具>选项>查询编辑器>图形查询语言选择语言,而不是使用指令:
通过 SDK 或 API 查询图形
设置以下客户端请求属性:
-
query_language:设置为"opencypher"或"gql"。 -
query_graph_reference:设置为图形函数名称(例如"G")。 -
query_graph_label_name:设置为标签列名称(例如"Label2")。
有关详细信息,请参阅 此处的客户端请求属性。