Partilhar via


operador make-graph (Pré-visualização)

Aviso

Esta funcionalidade está atualmente em pré-visualização e pode estar sujeita a alterações. A semântica e a sintaxe da funcionalidade do gráfico podem ser alteradas antes de serem lançadas como geralmente disponíveis.

O make-graph operador cria uma estrutura de gráfico a partir de entradas tabulares de arestas e nós.

Syntax

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

Parâmetros

Nome Tipo Necessário Descrição
Arestas string ✔️ A origem tabular que contém as margens do gráfico, cada linha representa uma aresta no gráfico.
SourceNodeId string ✔️ A coluna em Arestas com os IDs do nó de origem das margens.
TargetNodeId string ✔️ A coluna em Arestas com os IDs do nó de destino das margens.
Nós string As expressões tabulares que contêm as propriedades dos nós no gráfico.
NodesId string As colunas com os IDs dos nós em Nós.

Devoluções

O make-graph operador devolve uma expressão de grafo e tem de ser seguido por um operador de gráfico. Cada linha na expressão Edges de origem torna-se uma aresta com o gráfico com propriedades que são os valores de coluna da linha. Cada linha na expressão tabular dos nós torna-se um nó no gráfico com propriedades que são os valores de coluna da linha. Os nós que aparecem na tabela Edges , mas que não têm uma linha correspondente nas tabelas de nós, são criados como nós com o ID do nó correspondente e propriedades vazias.

Nota

Cada nó tem um identificador exclusivo. Se o mesmo ID de nó aparecer nas tabelas Nodes1 e Nodes2 , é criado um único nó ao intercalar as respetivas propriedades. Se existirem valores de propriedade em conflito para o mesmo nó, um dos valores é escolhido arbitrariamente.

Exemplo

O exemplo seguinte cria um gráfico a partir de margens e tabelas de nós. Os nós representam pessoas e sistemas, e as arestas são relações diferentes entre nós. O make-graph operador cria o gráfico. Em seguida, há uma chamada para graph-match com um padrão de gráfico que procura caminhos de ataque para o nó do sistema "Trent".

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

Saída

Atacante Comprometido Sistema
Mallory Bob Trent