Operador graph-mark-components (versión preliminar)
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
El graph-mark-components
operador busca todos los componentes conectados de un grafo y marca cada nodo con un identificador de componente.
Nota:
Este operador se usa junto con el operador make-graph.
Sintaxis
G graph-mark-components
|
[kind
=
Kind] [with_component_id
=
ComponentId]
Parámetros
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
G | string | ✔️ | Origen del grafo. |
Variante | string | El tipo de componente conectado, ya sea weak (valor predeterminado) o strong . Un componente débil es un conjunto de nodos conectados por una ruta de acceso, ignorando la dirección de los bordes. Un componente seguro es un conjunto de nodos conectados en ambas direcciones, teniendo en cuenta las direcciones de los bordes. |
|
ComponentId | string | Nombre de propiedad que indica el identificador del componente. El nombre de propiedad predeterminado es ComponentId . |
Devoluciones
El graph-mark-components
operador devuelve un resultado de grafo , donde cada nodo tiene un identificador de componente en la propiedad ComponentId . El identificador es un índice consecutivo basado en cero de los componentes. Cada índice de componente se elige arbitrariamente y es posible que no sea coherente entre ejecuciones.
Ejemplos
Buscar familias por sus relaciones
En el ejemplo siguiente se crea un gráfico a partir de un conjunto de pares primarios secundarios e se identifican los componentes conectados mediante un family
identificador.
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
Salida
nombre | familia |
---|---|
Alice | 0 |
Bob | 0 |
Carol | 0 |
Dave | 0 |
Greg | 0 |
Howard | 0 |
Eve | 1 |
Franco | 1 |
Mallory | 1 |
Iglesia | 1 |
Encontrar un antecesor común más grande para cada familia
En el ejemplo siguiente se usa el identificador de componente family
conectado y el graph-match
operador para identificar el antecesor más grande de cada familia en un conjunto de datos primarios secundarios.
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
Salida
familia | Generaciones | nombre |
---|---|---|
1 | 2 | Mallory |
0 | 2 | Bob |