Я пытаюсь использовать один запрос гремлина для определения процента вершин, удовлетворяющих определенному предикату, но у меня возникают проблемы с хранением и распространением вычисленных значений.Gremlin- Как вычислить процент вершин с определенным свойством
Скажите, что я хочу вычислить процент всех вершин с меткой «A», у которой есть исходящий край с меткой «B». Я могу напечатать число вершин с меткой «А», хорошо, как число вершин исходящего ребра с меткой «B» в том же запросе:
g.V().limit(1).project("total","withEdgeB")
.by(g.V().hasLabel("A").count())
.by(g.V().hasLabel("A").match(__.as("a").outE("B").inV()).dedup().count())
Это дает мне две соответствующие значения: total
и withEdgeB
. Как я могу распространять и вычислять эти значения?
В идеале, я хочу что-то вроде этого:
g.V().limit(1).project("total","withEdgeB","percentage")
.by(g.V().hasLabel("A").count().as("totalA"))
.by(g.V().hasLabel("A").match(__.as("a").outE("B").inV()).dedup().count().as("totalWithEdgeB"))
.by(totalWithEdgeB/totalA)
Так что мой вопрос, как я могу получить доступ к значениям totalA
и totalWithEdgeB
в третьем by()
заявлении? Или я все об этом ошибаюсь?