2016-07-28 7 views
3

2つのCSVファイルに1つのデータがあり、1つに頂点が含まれ、もう1つのファイルにエッジが含まれています。私はETLを使用してこれを設定する方法を検討していますが、近いうちにはまだありません。ほとんどの場合動作しますが、エッジにはプロパティがあり、正しく読み込まれているかどうかはわかりません。 This questionは参考になりましたが、私はまだ...OrientDB ETL 1つのファイル内の頂点と別のファイルの端にある

何かが欠けているここに私のデータです: vertices.csv

label,data,date 
v01,0.1234,2015-01-01 
v02,0.5678,2015-01-02 
v03,0.9012,2015-01-03 

edges.csv

u,v,weight,date 
v01,v02,12.4,2015-06-17 
v02,v03,17.9,2015-09-14 

頂点を次のようにインポートします:

commonVertices.json vertices.json

{ 
"begin": [ 
      { "let": { "name":  "$filePath", 
         "expression": "$fileDirectory.append($fileName)" 
         } 
      }, 
     ], 
"config": { "log": "info"}, 
"source": { "file": { "path": "$filePath" } }, 
"extractor": { "csv": { "ignoreEmptyLines": true, 
         "nullValue": "N/A", 
         "dateFormat": "yyyy-mm-dd" 
         } 
      }, 
"transformers": [ 
        { "vertex": { "class": "myVertex" } }, 
        { "code": { "language": "Javascript", 
            "code":  "print(' Current record: ' + record); record;" } 
        } 
       ], 
"loader": { "orientdb": { 
      "dbURL": "plocal:my_orientdb", 
      "dbType": "graph", 
      "batchCommit": 1000, 
      "classes": [ { "name": "myVertex", "extends", "V" }, 
         ], 
      "indexes": [] 
      } 
      } 
} 

{ "config": { "log":   "info", 
       "fileDirectory": "./", 
       "fileName":  "vertices.csv" 
      } 
} 

commonEdges.json

{ 
    "begin": [ 
     { "let": { "name": "$filePath", 
        "expression": "$fileDirectory.append($fileName)" 
       } 
     }, 
    ], 

    "config": { "log": "info" 
       }, 

    "source": { "file": { "path": "$filePath" } }, 

    "extractor": { "csv": { "ignoreEmptyLines": true, 
          "nullValue": "N/A", 
          "dateFormat": "yyyy-mm-dd" 
          } 
       }, 

    "transformers": [ 
      { "merge": { "joinFieldName": "u", "lookup": "myVertex.label" } }, 
      { "edge": { "class":   "myEdge", 
          "joinFieldName": "v", 
          "lookup":  "myVertex.label", 
          "direction":  "out", 
          "unresolvedLinkAction": "NOTHING" 
         } 
      }, 
      { "field": { "fieldNames": ["u", "v"], "operation": "remove" } } 
     ], 

    "loader": { 
     "orientdb": { 
      "dbURL": "plocal:my_orientdb", 
      "dbType": "graph", 
      "batchCommit": 1000, 
      "useLightweightEdges": false, 
      "classes": [ 
       { "name": "myEdge", "extends", "E" } 
      ], 
      "indexes": [] 
     } 
    } 
} 

edges.json

{ 
    "config": { 
     "log": "info", 
     "fileDirectory": "./", 
     "fileName": "edges.csv" 
    } 
} 

私はこのようなoetl.shでそれを実行しています:

$ oetl.sh vertices.json commonVertices.json 
$ oetl.sh edges.json commonEdges.json 

すべてが実行されますが、私はエッジを照会すると...私はので、多分それは、OrientDBに新たなんです私のエッジのプロパティを取得、私は、私は体重と日付フィールドが表示されていないエッジを照会する場合:

orientdb {db=my_orientdb}> SELECT FROM myEdge 
+----+-----+------+-----+-----+ 
|# |@RID |@CLASS|out |in | 
+----+-----+------+-----+-----+ 
|0 |#33:0|myEdge|#25:0|#26:0| 
|1 |#34:0|myEdge|#26:0|#27:0| 
+----+-----+------+-----+-----+ 

を頂点テーブルは私のedges.csvと[日付]から[重量]フィールドが含まれていますフィールドは私をclobberedなっているn奇妙な方法。月の日が望ましくないedge.csvファイルから一日に上書きなっているが、それは月自体も変更を取得していないことを私には奇妙だ:

orientdb {db=my_orientdb}> SELECT FROM myVertex 
+----+-----+--------+------+-------------------+-----+------+----------+---------+ 
|# |@RID |@CLASS |data |date    |label|weight|out_myEdge|in_myEdge| 
+----+-----+--------+------+-------------------+-----+------+----------+---------+ 
|0 |#25:0|myVertex|0.1234|2015-01-17 00:06:00|v01 |12.4 |[#33:0] |   | 
|1 |#26:0|myVertex|0.5678|2015-01-14 00:09:00|v02 |17.9 |[#34:0] |[#33:0] | 
|2 |#27:0|myVertex|0.9012|2015-01-03 00:01:00|v03 |  |   |[#34:0] | 
+----+-----+--------+------+-------------------+-----+------+----------+---------+ 

私はそれがだと確信しています多分簡単な微調整、どんな助けも素晴らしいでしょう!

答えて

5

エッジトランスでは、エッジのプロパティをバインドするedgeFieldsです。例:

"transformers": [ 
      { "merge": { "joinFieldName": "u", "lookup": "myVertex.label" } }, 
      { "edge": { "class":   "myEdge", 
          "joinFieldName": "v", 
          "lookup":  "myVertex.label", 
          "edgeFields": { "weight": "${input.weight}", "date": "${input.date}" }, 
          "direction":  "out", 
          "unresolvedLinkAction": "NOTHING" 
         } 

      }, 
      { "field": { "fieldNames": ["u", "v"], "operation": "remove" } } 
     ], 

希望します。

+0

ありがとうございました。これは私がこの2つの問題の1つを解決しました。 – TxAG98

+0

私は、[別の質問](http://stackoverflow.com/questions/38702959/edge-properties-clobbering-vertex-properties-in-orientdb-from-etl)の日付フィールドに固有のフォローアップを投稿しました問題... – TxAG98

関連する問題