Cypher query - создание графа из csv файла

У меня есть два файла csv: (clean_data_2.csv: образец содержимого, как показано ниже)

Cypher query - создание графа из csv файла

(stationdata.csv: образец содержимого, как показано ниже)

Cypher query - создание графа из csv файла

Из моего шифровального запроса я хочу, чтобы каждая станция была представлена ​​как узел, а взаимосвязь - как количество.

Я сделал что-то вроде этого:

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///stationdata.csv" AS line
CREATE (s:station{id:line.station_id,station_name:line.name});

Загрузка всех данных станции: создаются все узлы - исходные и целевые столбцы.

LOAD CSV WITH HEADERS FROM "file:///clean_data_2.csv" AS line
MATCH (src:station),(dst:station)
CREATE (src)-[:TO{ count: [line.count]}]->(dst);

Вышеупомянутая часть выполняется, но не дает мне подсчитывать отношения между узлами.

Я новичок в Neo4j - графические базы данных, спасибо!

Можете ли вы указать в своем вопросе фактическое содержание двух файлов CSV?

cybersam 29.11.2018 03:02

Привет @cybersam: Я добавил отрывки :)

Pratyush Kulwal 29.11.2018 03:10

Это немного лучше, но можете ли вы показать фрагменты необработанные данные - а не то, что отображается инструментом (например, приложением для работы с электронными таблицами)? Также удалите исходные табличные данные, так как они неверны.

cybersam 29.11.2018 03:20

Кроме того, одна вопиющая проблема заключается в том, что в предложении MATCH вашего второго запроса не указаны name узлов station для src и dst, поэтому будут сопоставлены все возможные пары узлов station. Этот должен вызывает создание множества дополнительных отношений TO со свойствами count, и все же вы, кажется, говорите, что не получаете никаких свойств count?

cybersam 29.11.2018 03:33

@cybersam: Да, именно так! У меня появляются дополнительные отношения, и я не могу понять, как указать имена для узлов src и dst. Извините, мой вопрос был непонятен :)

Pratyush Kulwal 29.11.2018 14:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предложение MATCH вашего второго запроса не определяет имена узлов станции для src и dst, поэтому все возможные пары узлов станции будут сопоставлены. Это привело бы к созданию множества дополнительных отношений TO со свойствами count.

Попробуйте использовать это вместо второго запроса:

LOAD CSV WITH HEADERS FROM "file:///clean_data_2.csv" AS line
MATCH (src:station {name: line.src}), (dst:station {name: line.dst})
CREATE (src)-[:TO {count: TOINTEGER(line.count)}]->(dst);

Этот запрос указывает имена станций в предложении MATCH, чего не было в вашем запросе.

Этот запрос также преобразует значение line.count из строки (которой являются все значения, создаваемые LOAD CSV) в целое число и присваивает его как скалярное значение свойству count, поскольку нет необходимости в том, чтобы оно было массивом.

Другие вопросы по теме