2

コミュニケーショングラフを作成しています。
各メッセージには msgid があり、各人にはユーザー ID があります。
メッセージ頂点は既に作成しています。次に、ユーザー頂点と、メッセージ頂点をユーザー頂点に接続するエッジを作成します。
ユーザーは複数のメッセージを受け取ることができます (当然のことです)。
私のファイルには次が含まれています:
msgid、userid、(およびエッジに割り当てるその他の情報)

私が抱えている問題は、ファイルに重複したユーザー ID があることです (ユーザーは複数のメッセージを取得できるため)。ユーザー ID を使用して別の頂点を作成したくないので、Duplicates をスキップします。しかし、重複をスキップすると、エッジも作成されません。各エッジが 1 つのメッセージを表すため、同じユーザー頂点に複数のエッジが必要です。

ユーザー頂点を一意に保ちながらエッジを作成するにはどうすればよいですか?

上記で詳述したものを除いて、正常に機能する現在の ETL .json ファイル。

{
 "source": { "file": { "path": "msgs.txt" } },
  "extractor": { "row": {} },
  "transformers": [
    { "csv": {"separator": "\t"} },
      { "vertex": { "class": "user", "skipDuplicates": true  } },
    { "edge": { "class": "sent_to", "joinFieldName": "msgid", "lookup":"message.id","direction": "in"   } },
    "edgeFields": { "n": "${input.n}" }


  ],
  "loader": {
    "orientdb": {
       "dbURL": "remote:/localhost/databases/communication",
       "dbType": "graph",
       "classes": [
         {"name": "user",    "extends":  "V"},
         {"name": "message", "extends": "V"},
         {"name": "sent_to",     "extends":  "E"}
       ], "indexes": [
         {"class":"user", "fields":["id"], "type":"UNIQUE" }
       ]
    }
  }
}
4

1 に答える 1