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

最佳答案

我会假设,

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


  • 然后下面的 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)
  • 关于orientdb - 如何通过 OrientDb ETL 仅创建边,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31047918/

    10-15 06:33