2
帶有一個joinFieldName並查找Edge變壓器的工作原理。但是,現在需要兩個鍵,即查找中的複合索引。如何指定兩個joinFieldNames?OrientDB ETL邊緣變換器2 joinFieldName(s)
這是腳本(後處理)版本: 創建邊緣擴展從(從MC選取樣品= 1和MKEY = 6)〜(從事件選擇其中樣品= 1和Mcl = 6)。
這個工作,但不適合生產。
任何人都可以幫忙嗎?
帶有一個joinFieldName並查找Edge變壓器的工作原理。但是,現在需要兩個鍵,即查找中的複合索引。如何指定兩個joinFieldNames?OrientDB ETL邊緣變換器2 joinFieldName(s)
這是腳本(後處理)版本: 創建邊緣擴展從(從MC選取樣品= 1和MKEY = 6)〜(從事件選擇其中樣品= 1和Mcl = 6)。
這個工作,但不適合生產。
任何人都可以幫忙嗎?
,你可以簡單地添加2 joinFieldName(S),如
{ "edge": { "class": "Conn",
"joinFieldName": "b1",
"lookup": "A.a1",
"joinFieldName": "b2",
"lookup": "A.a2",
"direction": "out"
}}
見下面我的測試數據:
json1.json
{
"source": { "file": { "path": "/home/ivan/Scrivania/cose/etl/stak39517796/data1.csv" } },
"extractor": { "csv": {} },
"transformers": [
{ "vertex": { "class": "A" } }
],
"loader": {
"orientdb": {
"dbURL": "plocal:/home/ivan/OrientDB/db_installati/enterprise/orientdb-enterprise-2.2.10/databases/stack39517796",
"dbType": "graph",
"dbAutoCreate": true,
"classes": [
{"name": "A", "extends": "V"},
{"name": "B", "extends": "V"},
{"name": "Conn", "extends": "E"}
]
}
}
}
json2.json
{
"source": { "file": { "path": "/home/ivan/Scrivania/cose/etl/stak39517796/data2.csv" } },
"extractor": { "csv": {} },
"transformers": [
{ "vertex": { "class": "B" } },
{ "edge": { "class": "Conn",
"joinFieldName": "b1",
"lookup": "A.a1",
"joinFieldName": "b2",
"lookup": "A.a2",
"direction": "out"
}}
],
"loader": {
"orientdb": {
"dbURL": "plocal:/home/ivan/OrientDB/db_installati/enterprise/orientdb-enterprise-2.2.10/databases/stack39517796",
"dbType": "graph",
"dbAutoCreate": true,
"classes": [
{"name": "A", "extends": "V"},
{"name": "B", "extends": "V"},
{"name": "Conn", "extends": "E"}
]
}
}
}
data1.csv
a1,a2
1,1
1,2
2,3
data2.csv
b1,b2
1,1
2,3
1,2
執行順序:
這裏是最終結果:
orientdb {db=stack39517796}> select from v
+----+-----+------+----+----+-------+----+----+--------+
|# |@RID |@CLASS|a1 |a2 |in_Conn|b2 |b1 |out_Conn|
+----+-----+------+----+----+-------+----+----+--------+
|0 |#17:0|A |1 |1 |[#25:0]| | | |
|1 |#18:0|A |1 |2 |[#27:0]| | | |
|2 |#19:0|A |2 |3 |[#26:0]| | | |
|3 |#21:0|B | | | |1 |1 |[#25:0] |
|4 |#22:0|B | | | |3 |2 |[#26:0] |
|5 |#23:0|B | | | |2 |1 |[#27:0] |
+----+-----+------+----+----+-------+----+----+--------+
優秀的幫助伊萬! Mille Grazie – Tore
@ ivan-mainetti我不知道這是否工作...如果你追加'2,1'到data1.csv和data2.csv,結果會產生額外的邊緣從b(1,1)到a(1,1)和(2,1)。我認爲它只匹配最後一個連接字段,而不是執行** AND **操作。 – TxAG98
@ ivan-mainetti我對它進行了更多的研究,我認爲這隻適用於你的例子,因爲a2和b2是唯一的。 json2.json中的第二個「joinFieldName」條目將[不會導致錯誤而破壞第一個...](http://stackoverflow.com/questions/5306741/do-json-keys-need-to-be-唯一的)如果你使用調試日誌記錄運行它,你會發現它只匹配a2到b2。 – TxAG98