Dela via


make-graph-operator

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Operatorn make-graph skapar en grafstruktur från tabellindata för kanter och noder.

Syntax

Edges|make-graphSourceNodeId-->TargetNodeId [ withNodes1onNodeId1 [,Nodes2onNodeId2 ]]

Edges|make-graphSourceNodeId-->TargetNodeId [ with_node_id=DefaultNodeId ]

Parametrar

Namn Typ Krävs Beskrivning
kanter string ✔️ Den tabellkälla som innehåller grafens kanter, varje rad representerar en kant i diagrammet.
SourceNodeId string ✔️ Kolumnen i Kanter med källnod-ID:t för kanterna.
TargetNodeId string ✔️ Kolumnen i Kanter med målnodens ID:t för kanterna.
noder string Tabelluttrycken som innehåller egenskaperna för noderna i diagrammet.
NodesId string Kolumnerna med nod-ID:t i Nodes.
DefaultNodeId string Namnet på kolumnen för standardnod-ID:t.

Returnerar

Operatorn make-graph returnerar ett grafuttryck och måste följas av en grafoperator. Varje rad i källan Kanter uttryck blir en kant i diagrammet med egenskaper som är kolumnvärdena för raden. Varje rad i Nodes tabelluttryck blir en nod i diagrammet med egenskaper som är kolumnvärdena för raden. Noder som visas i tabellen Kanter men som inte har någon motsvarande rad i tabellen Noder skapas som noder med motsvarande nod-ID och tomma egenskaper.

Not

Varje nod har en unik identifierare. Om samma nod-ID visas i både Nodes1 och Nodes2 tabeller skapas en enda nod genom att deras egenskaper slås samman. Om det finns motstridiga egenskapsvärden för samma nod väljs ett av värdena godtyckligt.

Användare kan hantera nodinformation på följande sätt:

  1. Ingen nodinformation krävs:make-graph slutförs med källa och mål.
  2. explicita nodegenskaper: använda upp till två tabelluttryck med hjälp av "withNodes1onNodeId1 [,Nodes2onNodeId2 ]."
  3. Standardnodidentifierare: användawith_node_id=DefaultNodeId.

Exempel

Diagram över kanter och noder

I följande exempel skapas ett diagram från tabeller med kanter och noder. Noderna representerar personer och system, och kanterna representerar olika relationer mellan noder. Operatorn make-graph skapar diagrammet. Sedan används graph-match-operatorn med ett diagrammönster för att söka efter attacksökvägar som leder till "Trent" systemnod.

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

utdata

Angripare Äventyras System
Mallory Guppa Trent

Standardnodidentifierare

I följande exempel skapas ett diagram med bara kanter, med egenskapen name som standardnodidentifierare. Den här metoden är användbar när du skapar ett diagram från ett tabelluttryck av kanter, vilket säkerställer att nodidentifieraren är tillgänglig för begränsningsavsnittet i den efterföljande graph-match-operatorn.

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

utdata

Angripare Äventyras System
Mallory Guppa Trent