【问题标题】:How to Create Only Edges Through OrientDb ETL如何通过 OrientDb ETL 只创建边
【发布时间】:2015-06-25 10:35:34
【问题描述】:

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

【问题讨论】:

    标签: orientdb


    【解决方案1】:

    我会假设

    • 这两个类是AB

    • A 拥有Id1

    • B 拥有Id2

    • 边缘的类是AtoB

    • AB 实例存在于数据库中

    • AtoB.csv 就像

      AId,BId

      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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多