2015-06-25 2 views
4

У меня есть файл CSV, имеющий Id1 и Id2. Id1 и Id2 являются вершинами двух разных классов. Я хочу сделать ребро между Id1 и Id2. Может ли это быть достигнуто с помощью ETL?
Можем ли мы добавить что-то в конфигурацию кромок трансформаторов для этого.Как создать только края через OrientDb ETL

ответ

1

я буду считать, что

  • два класса являются A и B
  • A имеет Id1
  • B имеет Id2
  • класс кромки AtoB
  • A и B экземпляры присутствуют в БД
  • AtoB.csv, как

    Aid, Bid

    a1, b1

    a2, b2

    a2, b3

Тогда следующая конфигурация ETL wi сделаю

{ 
    "source": { "file": { "path": "...\AtoB.csv" } }, 
    "extractor": { "csv": { } }, 
    "transformers": [ 
    { "merge": { 
     "joinFieldName": "BId", 
     "lookup": "B.Id2", 
     "unresolvedLinkAction": "WARNING" } }, 
    { "vertex": { "class": "B" } }, 
    { "edge": { 
     "class": "AtoB", 
     "joinFieldName": "AId", 
     "lookup": "A.Id1", 
     "direction": "in" } }, 
    { "field": { 
     "fieldNames": ["AId", "BId"], 
     "operation": "remove" } } 
    ], 
    "loader": { 
    "orientdb": { 
     "dbURL": "plocal:../databases/...", 
     "dbType": "graph", 
     "useLightweightEdges": false, 
     "classes": [ 
     { "name": "A", "extends": "V" }, 
     { "name": "B", "extends": "V" }, 
     { "name": "AtoB", "extends": "E" } 
     ] 
    } 
    } 
} 

Результат будет

  • (a1) ➡ (b1)
  • (a2) ➡ (b2)
  • (a2) ➡ (b3)
Смежные вопросы