Delen via


operator voor make-graph

Van toepassing op: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel-

De operator make-graph bouwt een grafiekstructuur op basis van tabellaire invoer van randen en knooppunten.

Syntaxis

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

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

Parameters

Naam Type Vereist Beschrijving
Edges string ✔️ De tabellaire bron met de randen van de grafiek, elke rij vertegenwoordigt een rand in de grafiek.
SourceNodeId- string ✔️ De kolom in Edges met de bronknooppunt-id's van de randen.
TargetNodeId- string ✔️ De kolom in Edges met de doelknooppunt-id's van de randen.
Knooppunten string De tabellaire expressies met de eigenschappen van de knooppunten in de grafiek.
NodesId- string De kolommen met de knooppunt-id's in Knooppunten.
DefaultNodeId- string De naam van de kolom voor de standaardknooppunt-id.

Retourneert

De operator make-graph retourneert een grafiekexpressie en moet worden gevolgd door een grafiekoperator. Elke rij in de bron Edges expressie wordt een rand in de grafiek met eigenschappen die de kolomwaarden van de rij zijn. Elke rij in de Knooppunten tabellaire expressie wordt een knooppunt in de grafiek met eigenschappen die de kolomwaarden van de rij zijn. Knooppunten die worden weergegeven in de Edges tabel, maar geen overeenkomende rij in de Knooppunten tabel worden gemaakt als knooppunten met de bijbehorende knooppunt-id en lege eigenschappen.

Notitie

Elk knooppunt heeft een unieke id. Als dezelfde knooppunt-id wordt weergegeven in de Nodes1 en Nodes2 tabellen, wordt één knooppunt gemaakt door de eigenschappen samen te voegen. Als er conflicterende eigenschapswaarden voor hetzelfde knooppunt zijn, wordt een van de waarden willekeurig gekozen.

Gebruikers kunnen op de volgende manieren knooppuntinformatie verwerken:

  1. Geen knooppuntgegevens vereist:make-graph is voltooid met bron en doel.
  2. Expliciete knooppunteigenschappen: maximaal twee tabellaire expressies gebruiken metwithNodes1onNodeId1 [,Nodes2onNodeId2 ]."
  3. Standaardknooppunt-id: gebruiken "with_node_id=DefaultNodeId."

Voorbeeld

Randen en knooppuntengrafiek

In het volgende voorbeeld wordt een grafiek gebouwd op basis van randen en knooppunttabellen. De knooppunten vertegenwoordigen personen en systemen en de randen vertegenwoordigen verschillende relaties tussen knooppunten. De operator make-graph bouwt de grafiek. Vervolgens wordt de operator graph-match gebruikt met een grafiekpatroon om te zoeken naar aanvalspaden die leiden naar het "Trent" systeemknooppunt.

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

uitvoer

Aanvaller Gecompromitteerd Systeem
Mallory Bob Trent

Standaardknooppunt-id

In het volgende voorbeeld wordt een grafiek gemaakt met alleen randen, waarbij de eigenschap name als standaardknooppunt-id wordt gebruikt. Deze methode is handig bij het maken van een grafiek op basis van een tabellaire expressie van randen, zodat de knooppunt-id beschikbaar is voor de sectie beperkingen van de volgende graph-match operator.

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

uitvoer

Aanvaller Gecompromitteerd Systeem
Mallory Bob Trent