Sdílet prostřednictvím


Graph-mark-components – operátor (Preview)

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Operátor graph-mark-components najde všechny propojené součásti grafu a označí každý uzel identifikátorem komponenty.

Poznámka:

Tento operátor se používá ve spojení s operátorem make-graph.

Syntaxe

G graph-mark-components | [kind = Kind] [with_component_id = ComponentId]

Parametry

Název Type Požadováno Popis
G string ✔️ Zdroj grafu.
Kind string Druh připojené komponenty (výchozí weak ) nebo strong. Slabá komponenta je sada uzlů připojených cestou a ignoruje směr okrajů. Silná komponenta je sada uzlů připojených v obou směrech vzhledem k směrům okrajů.
ComponentId string Název vlastnosti, který označuje identifikátor komponenty. Výchozí název vlastnosti je ComponentId.

Návraty

Operátor graph-mark-components vrátí výsledek grafu , kde každý uzel má identifikátor komponenty ve vlastnosti ComponentId . Identifikátor je po sobě jdoucí index komponent založený na nule. Každý index komponent je zvolen libovolně a nemusí být konzistentní napříč spuštěními.

Příklady

Hledání rodin podle jejich vztahů

Následující příklad vytvoří graf ze sady dvojic podřízených nadřazených položek a identifikuje připojené komponenty pomocí identifikátoru 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

Výstup

name family
Alice 0
Robert 0
Koleda 0
Dave 0
Greg 0
Howard 0
Předvečer 0
Upřímný 0
Mallory 0
Kostel 0

Najít nejlepšího společného předka pro každou rodinu

Následující příklad používá identifikátor připojené komponenty family a graph-match operátor k identifikaci největšího nadřazeného prvku každé rodiny v sadě podřízených nadřazených dat.

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

Výstup

family generace name
1 2 Mallory
0 2 Robert