Свойства ребра, затирающие свойства вершин в OrientDB из ETL
Это продолжение другого вопроса, который я разместил в отношении импорта простой базы данных в OrientDB с использованием ETL, у которого были свойства как ребер, так и вершин с датами на обоих.
Вот мои данные:
vertices.csv:
label,data,date
v01,0.1234,2015-01-01
v02,0.5678,2015-01-02
v03,0.9012,2015-01-03
dge.csv:
u,v,weight,date
v01,v02,12.4,2015-06-17
v02,v03,17.9,2015-09-14
Для краткости я добавлю только обновленный файл commonEdges.json, используя правки из другого вопроса. Другие файлы JSON не изменены.
commonEdges.json:
{
"begin": [ { "let": { "name": "$filePath", "expression": "$fileDirectory.append($fileName )" } } ],
"config": { "log": "info" },
"source": { "file": { "path": "$filePath" } },
"extractor": { "csv": { "ignoreEmptyLines": true,
"nullValue": "N/A",
"dateFormat": "yyyy-mm-dd"
}
},
"transformers": [
{ "merge": { "joinFieldName": "u", "lookup": "myVertex.label" } },
{ "edge": { "class": "myEdge",
"joinFieldName": "v",
"lookup": "myVertex.label",
"edgeFields": { "weight": "${input.weight}", "date": "${input.date}" },
"direction": "out",
"unresolvedLinkAction": "NOTHING"
}
},
{ "field": { "fieldNames": ["u", "v"], "operation": "remove" } }
],
"loader": {
"orientdb": {
"dbURL": "plocal:my_orientdb",
"dbType": "graph",
"batchCommit": 1000,
"useLightweightEdges": false,
"classes": [ { "name": "myEdge", "extends", "E" } ],
"indexes": []
}
}
}
Поля даты по-прежнему забиваются после загрузки графика.
Вот таблица вершин, если я не загружаю края:
orientdb {db=my_orientdb}> SELECT FROM myVertex
+----+-----+--------+------+-------------------+-----+
|# |@RID |@CLASS |data |date |label|
+----+-----+--------+------+-------------------+-----+
|0 |#25:0|myVertex|0.1234|2015-01-01 00:01:00|v01 |
|1 |#26:0|myVertex|0.5678|2015-01-02 00:01:00|v02 |
|2 |#27:0|myVertex|0.9012|2015-01-03 00:01:00|v03 |
+----+-----+--------+------+-------------------+-----+
Все выглядит правильно, даты 1/1/15 - 1/3/15.
После того, как я загружаю края, поля даты неверны:
orientdb {db=my_orientdb}> SELECT FROM myVertex
+----+-----+--------+------+-------------------+-----+------+----------+---------+
|# |@RID |@CLASS |data |date |label|weight|out_myEdge|in_myEdge|
+----+-----+--------+------+-------------------+-----+------+----------+---------+
|0 |#25:0|myVertex|0.1234|2015-01-17 00:06:00|v01 |12.4 |[#33:0] | |
|1 |#26:0|myVertex|0.5678|2015-01-14 00:09:00|v02 |17.9 |[#34:0] |[#33:0] |
|2 |#27:0|myVertex|0.9012|2015-01-03 00:01:00|v03 | | |[#34:0] |
+----+-----+--------+------+-------------------+-----+------+----------+---------+
Даты по краям также неверны:
orientdb {db=my_orientdb}> SELECT FROM myEdge
+----+-----+------+-----+-----+------+-------------------+
|# |@RID |@CLASS|out |in |weight|date |
+----+-----+------+-----+-----+------+-------------------+
|0 |#33:0|myEdge|#25:0|#26:0|12.4 |2015-01-17 00:06:00|
|1 |#34:0|myEdge|#26:0|#27:0|17.9 |2015-01-14 00:09:00|
+----+-----+------+-----+-----+------+-------------------+
Похоже, что OrientDB сжимает день месяца с уже загруженными датами... но поле месяца с краев каким-то образом помещается в поле минут. Это также проявляется как для вершин, так и для ребер.
Это просто ошибка в OrientDB или я что-то упустил в моих файлах ETL?
Заранее спасибо за любую помощь или совет.