make-graph-operator
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Operatorn make-graph
skapar en grafstruktur från tabellindata för kanter och noder.
Syntax
Edges|
make-graph
SourceNodeId-->
TargetNodeId [ with
Nodes1on
NodeId1 [,
Nodes2on
NodeId2 ]]
Edges|
make-graph
SourceNodeId-->
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:
-
Ingen nodinformation krävs:
make-graph
slutförs med källa och mål. -
explicita nodegenskaper: använda upp till två tabelluttryck med hjälp av "
with
Nodes1on
NodeId1 [,
Nodes2on
NodeId2 ]." -
Standardnodidentifierare: använda
with_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 |