Requisitos de esquema
Os algoritmos do Spanner Graph podem ser executados em grafos com esquemas que atendem aos seguintes requisitos:
- Uma tabela de entrada de aresta precisa ser intercalada na tabela de entrada do nó de origem e ter uma chave externa ou chave externa informativa para a tabela de entrada do nó de destino. Consulte Práticas recomendadas para projetar um esquema de Spanner Graph.
- Cada tabela de entrada do algoritmo de gráfico precisa ter um rótulo de identificação exclusivo.
Confira a seguir um exemplo de esquema não aceito:
-- Unsupported: Both `Person` and `Account` can only be referred to via label `Entity`.
CREATE PROPERTY GRAPH FinGraph
NODE TABLES (
Person KEY (id)
LABEL Entity PROPERTIES (...),
Account KEY (id)
LABEL Entity PROPERTIES (...)
);
Confira a seguir um exemplo de esquema compatível:
-- Supported: Even though label `Entity` refers to both `Person` and `Account`,
-- label `Customer` uniquely identifies `Person`, label `Account` uniquely identifies `Account`.
CREATE PROPERTY GRAPH FinGraph
NODE TABLES (
Person KEY (id)
LABEL Customer PROPERTIES (...)
LABEL Entity PROPERTIES (...),
Account KEY (id)
LABEL Account PROPERTIES (...)
LABEL Entity PROPERTIES (...)
);
Compatibilidade de recursos
Esta seção descreve a compatibilidade de consultas de algoritmo com recursos gerais de gráficos.
Cláusula MATCH compatível
Ao usar a cláusula MATCH na estrutura de consulta de algoritmo para definir o gráfico de entrada dos algoritmos, considere o seguinte:
- Cada
MATCHprecisa conter apenas um padrão de elemento (nó ou aresta) com uma variável nomeada. - Quando um padrão de aresta inclui padrões explícitos para nós finais, não use um rótulo de nó ou variável nos padrões de nó.
- Você pode usar uma cláusula
WHEREno padrão de elemento se ela não se referir a variáveis definidas em outro lugar. - A expressão de rótulo na cláusula
MATCHprecisa identificar de maneira exclusiva uma tabela de elementos.
Os exemplos a seguir demonstram cláusulas MATCH compatíveis:
-- Supported: Assuming only 1 element table has `Account` label:
MATCH (a:Account)
MATCH (a:Account WHERE a.id > 400)
MATCH (a:Account WHERE a.id IN [101, 102, 105])
MATCH -[e:Transfers WHERE e.amount < 500]->
Os exemplos a seguir demonstram cláusulas MATCH não aceitas:
-- Unsupported: End nodes for edge patterns cannot have labels or named variables.
MATCH (a:Account)-[]->
-- Unsupported: Each MATCH can only name one variable.
MATCH (a:Account)-[e:Transfers]->
-- Unsupported: If there are multiple node element tables in the graph, each MATCH
-- must uniquely identify one element table.
MATCH (a)
-- Unsupported: The `Entity` label maps to both `Account` and `Person` node element tables.
MATCH (a:Account | Entity)
Usar a cláusula RETURN
A cláusula RETURN na estrutura de consulta do algoritmo define os dados retornados pela consulta. É possível se referir a colunas da assinatura de saída do algoritmo na cláusula RETURN, com algumas restrições:
- Se um algoritmo gerar um Node, você poderá retornar qualquer propriedade do nó. Você também pode retornar ELEMENT_DEFINITION_NAME do nó.
- Se um algoritmo gerar um
Path,
você poderá retornar
PATH_LENGTH(path). - É possível retornar qualquer saída escalar do algoritmo.
- É possível retornar qualquer constante literal.
Os exemplos a seguir demonstram cláusulas RETURN compatíveis:
-- Supported.
CALL PageRank(...) YIELD node, score
RETURN ELEMENT_DEFINITION_NAME(node) AS node_type, node.id, score
-- Supported: You can return constants.
CALL PageRank(...) YIELD node, score
RETURN node.id, score, "pagerank-run1" AS algo_run_id
-- Supported.
CALL ShortestPath(...) YIELD source_node, target_node, path, cost
RETURN source_node.id AS source_id, target_node.id AS target_id,
PATH_LENGTH(path) AS length, cost
Os exemplos a seguir demonstram cláusulas RETURN não aceitas:
-- Unsupported: You cannot return the graph element `node` directly.
RETURN node, score
-- Unsupported: You can only return properties of `node`. Applying a function to a node property
-- is not supported.
RETURN node.id + 1, score
-- Unsupported: You can only return the scalar `score` directly from the algorithm output. Applying
-- a function to scalar output is not supported.
RETURN node.id, score + 1
-- Unsupported: General function calls are not allowed.
RETURN JSON_OBJECT(node.id, score) as json_obj
Os parâmetros não são compatíveis
As consultas de algoritmo não são compatíveis com parâmetros de consulta.
Suporte a gráficos criados com base em uma visualização
Ao criar um gráfico em uma visualização, as consultas de algoritmo só são compatíveis se os nós e as arestas (incluindo os nós finais de uma aresta) usados para definir a entrada do algoritmo não forem baseados em uma visualização.
A seguir
- Algoritmos de execução do Spanner Graph.
- Catálogo de algoritmos do Spanner Graph.
- Práticas recomendadas do algoritmo do Spanner Graph.