如何通过OrientDb ETL创建仅边缘

时间:2015-06-25 10:35:34

标签: orientdb

我有一个CSV文件,有Id1和Id2。 Id1和Id2是两个不同类的顶点。我想在Id1和Id2之间建立优势。这可以通过ETL来实现吗? 我们可以在变换器的边缘配置中添加一些东西来实现这一点。

1 个答案:

答案 0 :(得分:1)

我会假设,

  • 这两个类是AB
  • AId1
  • BId2
  • 边缘的类别为AtoB
  • 数据库中存在
  • AB个实例
  • AtoB.csv就像

      

    助剂,出价

         

    A1,B1

         

    A2,B2

         

    A2,B3

然后以下ETL配置将

{
  "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)