Compartir a través de


Operador graph-mark-components (versión preliminar)

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft 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