graph-mark-components
运算符查找图形的所有已连接组件,并使用组件标识符标记每个节点。
注意
此运算符与 生成图形运算符一起使用。
语法
G|
graph-mark-components
[kind
=
Kind] [with_component_id
=
ComponentId]
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
G | 字符串 | ✔️ | 图形源。 |
种类 | 字符串 | 连接的组件类型 weak (默认值)或 strong 。 弱组件是由路径连接的一组节点,忽略边缘的方向。 强组件是在两个方向之间连接的一组节点,考虑边缘的方向。 |
|
ComponentId | 字符串 | 表示组件标识符的属性名称。 默认的属性名称为 ComponentId 。 |
返回
运算符 graph-mark-components
返回一个图形结果,其中每个节点在 ComponentId 属性中都有一个组件标识符。 标识符是组件从零开始的连续索引。 每个组件索引都是任意选择的,在运行中可能不一致。
示例
以下示例从一组子-父对创建图形,并使用 family
标识符标识连接的组件。
let ChildOf = datatable(child:string, parent:string)
[
"Alice", "Bob",
"Carol", "Alice",
"Carol", "Dave",
"Greg", "Alice",
"Greg", "Dave",
"Howard", "Alice",
"Howard", "Dave",
"Eve", "Frank",
"Frank", "Mallory",
"Eve", "Kirk",
];
ChildOf
| make-graph child --> parent with_node_id=name
| graph-mark-components with_component_id = family
| graph-to-table nodes
输出
姓名 | 家庭 |
---|---|
爱丽丝 | 0 |
鲍勃 | 0 |
颂歌 | 0 |
戴夫 | 0 |
格雷格 | 0 |
霍华德 | 0 |
前夕 | 1 |
弗兰克 | 1 |
马洛里 | 1 |
柯克 | 1 |
以下示例使用连接的组件 family
标识符和 graph-match
运算符在一组子-父数据中标识每个系列的最高上级。
let ChildOf = datatable(child:string, parent:string)
[
"Alice", "Bob",
"Carol", "Alice",
"Carol", "Dave",
"Greg", "Alice",
"Greg", "Dave",
"Howard", "Alice",
"Howard", "Dave",
"Eve", "Frank",
"Frank", "Mallory",
"Eve", "Kirk",
];
ChildOf
| make-graph child --> parent with_node_id=name
| graph-mark-components with_component_id = family
| graph-match (descendant)-[childOf*1..5]->(ancestor)
project name = ancestor.name, lineage = map(childOf, child), family = ancestor.family
| summarize (generations, name) = arg_max(array_length(lineage),name) by family
输出
家庭 | 代数 | 姓名 |
---|---|---|
1 | 2 | 马洛里 |
0 | 2 | 鲍勃 |