Мне нужно импортировать существующую онтологию лекарств в Neo4j. Эта онтология хранится в файле CSV; он содержит ~ 30000 строк и 192 столбца на строку (то есть значения). Дело в том, что из этих 192 столбцов подавляющее большинство из них (~ 170) имеют нулевые значения почти во всех строках.
Примеры, с которыми я сталкивался до сих пор, включают гораздо более простые схемы (с 4 или 5 столбцами). Кроме того, я не нашел никаких полезных идей о том, как бороться с моделями такого типа. Тем не менее, я нашел информацию относительно нулевых значений в целом; тем не менее, будучи новичком в Neo4j, я не уверен, как лучше импортировать данные в CSV-файл. Насколько я знаю, это альтернативы:
- Импорт поэтапно. Согласно вебинару на официальной веб-странице Neo4j, я мог бы сначала импортировать столбец идентификатора, а затем, для каждого столбца «X» с нулевыми значениями, фильтровать ненулевые значения в столбце X и выгружать оба столбца в новый файл CSV. Эта последняя операция привела бы к коду Cypher, подобному следующему (при условии, что все лекарства уже импортированы):
USING PERIODIC COMMIT 10000
LOAD CSV WITH HEADERS FROM "file:///Users/user/ontology_with .csv" AS line
MATCH (drug:Drug {id: line.`Class ID`})
MATCH (d:Drug {id: line.`X`})
CREATE (drug)-[:ACTIVATES_DRUG]->(d)
- Использование оператора FOR EACH, что, как мне кажется, упрощает предыдущую операцию:
USING PERIODIC COMMIT 10000
LOAD CSV WITH HEADERS FROM "file:///Users/user/ontology_with .csv" AS line
FOREACH(n IN (CASE WHEN line.activates IS NULL THEN [] ELSE [1] END) |
MERGE (drug:Drug {id: line.`Class ID`})
CREATE (n)-[:ACTIVATES_DRUG]->(drug)
)
- Использование пакетного импортера. Хотя в зависимости от размера CSV (~ 30000 строк) эту опцию следует отклонить, может ли она быть полезной с учетом нулевых значений? Как мне справиться с нулевыми значениями, если лучшим вариантом окажется пакетный импортер?
Принимая во внимание особенности моего исходного файла CSV, особенно огромное количество столбцов, какой способ импорта данных в Neo4j вы бы предложили? Буду признателен за советы экспертов или опытных пользователей Neo4j.