operátor make-graph
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Operátor make-graph
sestaví strukturu grafu z tabulkových vstupů hran a uzlů.
Syntaxe
Hrany|
make-graph
-->
[ with
on
NodeId1 [ on
NodeId2 ]]
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:
-
Nejsou vyžadovány žádné informace o uzlu:
make-graph
dokončeno se zdrojem a cílem. -
Explicitní vlastnosti uzlu: použijte až dva tabulkové výrazy pomocí Nodes1
on
NodeId1 [on
NodeId2 ]." -
Výchozí identifikátor uzlu: použijte DefaultNodeId
with_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 |