У меня есть два файла csv: (clean_data_2.csv: образец содержимого, как показано ниже)
(stationdata.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 - графические базы данных, спасибо!
Привет @cybersam: Я добавил отрывки :)
Это немного лучше, но можете ли вы показать фрагменты необработанные данные - а не то, что отображается инструментом (например, приложением для работы с электронными таблицами)? Также удалите исходные табличные данные, так как они неверны.
Кроме того, одна вопиющая проблема заключается в том, что в предложении MATCH вашего второго запроса не указаны name узлов station для src и dst, поэтому будут сопоставлены все возможные пары узлов station. Этот должен вызывает создание множества дополнительных отношений TO со свойствами count, и все же вы, кажется, говорите, что не получаете никаких свойств count?
@cybersam: Да, именно так! У меня появляются дополнительные отношения, и я не могу понять, как указать имена для узлов src и dst. Извините, мой вопрос был непонятен :)





Предложение 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, поскольку нет необходимости в том, чтобы оно было массивом.
Можете ли вы указать в своем вопросе фактическое содержание двух файлов CSV?