Оператор graph-mark-components (предварительная версия)
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Оператор graph-mark-components
находит все подключенные компоненты графа и помечает каждый узел идентификатором компонента.
Синтаксис
G graph-mark-components
|
[ Kind] [with_component_id
=
=
kind
ComponentId]
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
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
Выходные данные
name | семейство |
---|---|
Алиса | 0 |
Борис | 0 |
Лилия | 0 |
Dave | 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 = childOf.child, family = ancestor.family
| summarize (generations, name) = argmax(array_length(lineage),name) by family
Выходные данные
семейство | Поколений | name |
---|---|---|
1 | 2 | Мэллори |
0 | 2 | Борис |