Neo4J cypher: удалить петли из плоского набора результатов - PullRequest
0 голосов
/ 14 января 2020

Это расширение следующий вопрос :

У меня есть график, связанный с линией данных в Neo4J с путем переменной длины, содержащим промежуточные узлы (таблицы) в виде массив:

match p=(s)-[r:airflow_loads_to*]->(t)
where s.database_name='hive'
and s.schema_name='test'
and s.name="source_table"
return s.name, [n in nodes(p) | n.name] as arrayOfName,t.name

Теперь этот набор результатов содержит циклов, которые я хочу опустить . Я могу ' удалить ' этих циклов без сглаживания результата ArrayOfName, выполнив:

match p=(s)-[r:airflow_loads_to*]->(t)
where s.database_name='hive'
and s.schema_name='test'
and s.name="source_table"
return s.name, min(size(r)) as pathlen, t.name
order by pathlen

Однако, когда я добавляю ArrayOfName обратно, набор результатов снова содержит все строки. Я предполагаю, что это означает, что каким-то образом цепочка результатов будет использоваться, используя pathlen в качестве фильтра или , предотвращая существование циклов в пути p вообще. Но я застрял на том, как сделать sh этого ...

1 Ответ

1 голос
/ 14 января 2020

Вы пробовали

p=shortestPath((s)-[r:airflow_loads_to*]->(t))

, потому что кажется, что это то, что вам нужно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...