Конфигурация ETL JSON со взвешенными ребрами OrientDB
Я использую модуль OrientDB ETL для импорта данных из файла CSV в базу данных графа. Формат файла CSV выглядит следующим образом:
urlid_1,urlid_2,score
a,b,10
a,c,20
a,d,30
b,a,40
b,c,50
b,d,60
c,a,70
c,b,80
c,d,90
d,a,100
d,b,110
d,c,120
Я хочу, чтобы как только я импортировал это в orientdb, каждый из a
, b
, c
а также d
сохраняется как вершина в классе и создается ребро, начиная с urlid_1
в urlid_2
с весом ребра в качестве соответствующего score
в файле CSV.
Может кто-нибудь помочь мне с файлом конфигурации (JSON) для ETL??
Я попробовал решение, предложенное здесь: Самый простой способ импортировать простой CSV-файл в график с OrientDB ETL, но не получил ожидаемых результатов.
1 ответ
Попробуй это:
Чтобы импортировать данные:
data_2.csv
id
a
b
c
d
import_2.json
{
"source" : {
"file": { "path": "data_2.csv" }
},
"extractor" : {
"csv": {}
},
"transformers": [
{ "vertex": { "class": "Test" } }
],
"loader" : {
"orientdb": {
"dbURL": "plocal:your_path",
"dbUser": "your_user",
"dbPassword": "your_pwd",
"serverUser": "your_user",
"serverPassword": "your_pwd",
"dbType": "graph",
"classes": [
{"name": "Test", "extends":"V"},
]
}
}
}
Чтобы создать ребра:
data.csv
urlid_1,urlid_2,score
a,b,10
a,c,20
a,d,30
b,a,40
b,c,50
b,d,60
c,a,70
c,b,80
c,d,90
d,a,100
d,b,110
d,c,120
import.json
{
"source" : {
"file": { "path": "data.csv" }
},
"extractor" : {
"csv": {}
},
"transformers": [
{ "command":
{ "command": "CREATE EDGE link FROM (SELECT FROM Test where id= "${input.urlid_1}") TO (SELECT FROM Test where id = "${input.urlid_2}") set score=${input.score}"}
}
],
"loader" : {
"orientdb": {
"dbURL": "plocal:your_path",
"dbUser": "your_user",
"dbPassword": "your_pwd",
"serverUser": "your_user",
"serverPassword": "your_pwd",
"dbType": "graph",
"classes": [
{"name": "link", "extends":"E"}
]
}
}
}
Надеюсь, поможет
С уважением