Sdílet prostřednictvím


operátor make-graph

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

Operátor make-graph sestaví strukturu grafu z tabulkových vstupů hran a uzlů.

Syntaxe

Hrany|make-graph--> [ withonNodeId1 [ onNodeId2 ]]

Hrany|--> [ with_node_id=DefaultNodeId ]

Parametry

Název Type Požadováno Popis
Hrany string ✔️ Tabulkový zdroj obsahující okraje grafu, každý řádek představuje okraj grafu.
SourceNodeId string ✔️ Sloupec v hranách s ID zdrojových uzlů hran.
TargetNodeId string ✔️ Sloupec v hranách s ID cílových uzlů hrany.
Uzly string Tabulkové výrazy obsahující vlastnosti uzlů v grafu.
NodesId string Sloupce s ID uzlů v Uzlech.
DefaultNodeId string Název sloupce pro výchozí ID uzlu.

Návraty

Operátor make-graph vrátí výraz grafu a musí být následovaný operátorem grafu. Každý řádek ve zdrojovém výrazu Hrany se stane hranou v grafu s vlastnostmi, které jsou hodnotami sloupců řádku. Každý řádek v tabulkovém výrazu Nodes se stane uzlem v grafu s vlastnostmi, které jsou hodnotami sloupců řádku. Uzly, které se zobrazují v tabulce Hrany , ale nemají odpovídající řádek v tabulce Nodes , se vytvoří jako uzly s odpovídajícím ID uzlu a prázdnými vlastnostmi.

Poznámka:

Každý uzel má jedinečný identifikátor. Pokud se stejné ID uzlu zobrazí v tabulkách Nodes1 i Nodes2 , vytvoří se jeden uzel sloučením jejich vlastností. Pokud existují konfliktní hodnoty vlastností pro stejný uzel, jedna z hodnot je libovolně zvolena.

Uživatelé můžou zpracovávat informace o uzlech následujícími způsoby:

  1. Nejsou vyžadovány žádné informace o uzlu:make-graph dokončeno se zdrojem a cílem.
  2. Explicitní vlastnosti uzlu: použijte až dva tabulkové výrazy pomocí Nodes1 onNodeId1 [ onNodeId2 ]."
  3. Výchozí identifikátor uzlu: použijte DefaultNodeIdwith_node_id=.

Příklad

Graf hran a uzlů

Následující příklad vytvoří graf z hran a tabulek uzlů. Uzly představují lidi a systémy a hrany představují různé vztahy mezi uzly. Operátor make-graph sestaví graf. graph-match Operátor se pak používá se vzorem grafu k vyhledání cest útoku, které vedou k systémovému "Trent" uzlu.

let nodes = datatable(name:string, type:string, age:int) 
[ 
  "Alice", "Person", 23,  
  "Bob", "Person", 31,  
  "Eve", "Person", 17,  
  "Mallory", "Person", 29,  
  "Trent", "System", 99 
]; 
let edges = datatable(Source:string, Destination:string, edge_type:string) 
[ 
  "Alice", "Bob", "communicatesWith",  
  "Alice", "Trent", "trusts",  
  "Bob", "Trent", "hasPermission",  
  "Eve", "Alice", "attacks",  
  "Mallory", "Alice", "attacks",  
  "Mallory", "Bob", "attacks"  
]; 
edges 
| make-graph Source --> Destination with nodes on name 
| graph-match (mallory)-[attacks]->(compromised)-[hasPermission]->(trent) 
  where mallory.name == "Mallory" and trent.name == "Trent" and attacks.edge_type == "attacks" and hasPermission.edge_type == "hasPermission" 
  project Attacker = mallory.name, Compromised = compromised.name, System = trent.name

Výstup

Útočník Udělal kompromis Systémový
Mallory Robert Trent

Výchozí identifikátor uzlu

Následující příklad sestaví graf pouze pomocí hran s name vlastností jako výchozí identifikátor uzlu. Tento přístup je užitečný při vytváření grafu z tabulkového výrazu hran, aby byl identifikátor uzlu k dispozici pro část omezení následného graph-match operátoru.

let edges = datatable(source:string, destination:string, edge_type:string) 
[ 
  "Alice", "Bob", "communicatesWith",  
  "Alice", "Trent", "trusts",  
  "Bob", "Trent", "hasPermission",  
  "Eve", "Alice", "attacks",  
  "Mallory", "Alice", "attacks",  
  "Mallory", "Bob", "attacks"  
]; 
edges 
| make-graph source --> destination with_node_id=name
| graph-match (mallory)-[attacks]->(compromised)-[hasPermission]->(trent) 
  where mallory.name == "Mallory" and trent.name == "Trent" and attacks.edge_type == "attacks" and hasPermission.edge_type == "hasPermission" 
  project Attacker = mallory.name, Compromised = compromised.name, System = trent.name

Výstup

Útočník Udělal kompromis Systémový
Mallory Robert Trent