Я получаю другой график на neo4j. Как получить график 1-1

#graph #neo4j

#График #neo4j

Вопрос:

У меня есть образцы данных, и я хочу построить график с помощью neo4j.

 shop    memberID    age type    number
Gyms    1           13  B       0-01
Gyms    1           14  A       0-02
Gyms    1           14  A       0-03
Gyms    1           20  B       0-04
Gyms    2           16  B       0-01
Gyms    2           16  B       0-02
Gyms    2           38  A       0-03
Gyms    2           38  A       0-04
Gyms    3           15  A       0-01
  

Я ожидаю получить такую же картину.
введите описание изображения здесь

Фактически, я строю график и получаю эту картинку. введите описание изображения здесь

Не могли бы вы рассказать мне, как справиться с моим ожидаемым графиком?

Вот код neo4j для запуска графика

 LOAD CSV WITH HEADERS FROM 'file:///test.csv' AS row
MERGE (shop:shop {shop: row.shop})
MERGE (memberID:memberID {memberID: toInteger(row.memberID)})
MERGE (age:page {age: toInteger(row.age)})
MERGE (type:type {type: row.type})
MERGE (number:number {number: row.number})

MERGE path1 = (memberID)<-[:is_member]-(shop)
MERGE path2 = (age)<-[:is_age]-(memberID)
MERGE path3 = (type)<-[:is_type]-(age)
MERGE path4 = (number)<-[:is_number]-(type)

RETURN path1, path2, path3, path4
  

Комментарии:

1. Вы не объяснили свой вариант использования, но вам может потребоваться пересмотреть свою модель данных. Вот лишь некоторые из потенциальных вопросов / проблем. Необходимо ли, чтобы каждое свойство находилось в своем собственном узле? Почему у участника может быть несколько возрастов? type Действительно ли a относится к age — или он должен принадлежать члену?

Ответ №1:

Ну, кажется, вам не следует объединять каждый узел отдельно, например, вы хотите, чтобы на вашем графике было больше одного узла для возраста 15 лет. Вы можете изменить свой запрос следующим образом, чтобы объединить каждый последующий узел по отношению к каждому родительскому узлу.

 LOAD CSV WITH HEADERS FROM 'file:///test.csv' AS row
MERGE (shop:shop {shop: row.shop})
MERGE (shop)-[:is_member]->(memberID:memberID {memberID: toInteger(row.memberID)})
MERGE (memberID)-[:is_age]->(age:page {age: toInteger(row.age)})
MERGE (age)-[:is_type]->(type:type {type: row.type})
MERGE (type)-[:is_number]->(number:number {number: row.number})
RETURN *
  

Комментарии:

1. У меня также есть другой вопрос, как обращаться с нулевым значением, если какая-то строка в числовом столбце равна нулю, она показывает «Невозможно объединить узел, используя значение свойства null для number»