operator voor make-graph
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel-
De operator make-graph
bouwt een grafiekstructuur op basis van tabellaire invoer van randen en knooppunten.
Syntaxis
Edges|
make-graph
SourceNodeId-->
TargetNodeId [ with
Nodes1on
NodeId1 [,
Nodes2on
NodeId2 ]]
Edges|
make-graph
SourceNodeId-->
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:
-
Geen knooppuntgegevens vereist:
make-graph
is voltooid met bron en doel. -
Expliciete knooppunteigenschappen: maximaal twee tabellaire expressies gebruiken met
with
Nodes1on
NodeId1 [,
Nodes2on
NodeId2 ]." -
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 |