j'ai des données que je suis suivi qui ressemble à quelque chose comme ceci:OrientDB créer ETL bord en utilisant plusieurs champs dans les critères de match
node.csvLabel1,Label2
Alpha,A
Alpha,B
Alpha,C
Bravo,A
Bravo,B
La paire Label1
et Label2
définissent une entrée unique cet ensemble de données.
j'ai une autre table qui a des valeurs dans ce que je veux créer un lien vers les sommets créés dans Table1
:
Label1,Label2,Data
Alpha,A,10
Alpha,A,20
Alpha,B,30
Bravo,A,99
Je voudrais générer des bords à partir des entrées Data
à Node
lorsque les champs Label1
et Label2
correspondent dans chacun.
Dans ce cas, je dois:
Data(Alpha,A,10) ---> Node(Alpha,A)
Data(Alpha,A,20) ---> Node(Alpha,A)
Data(Alpha,B,30) ---> Node(Alpha,B)
Data(Bravo,A,99) ---> Node(Bravo,A)
Dans un autre question il semble que cette question se résout en ajoutant simplement une entrée « joinFieldName » supplémentaire dans le fichier JSON, mais je ne reçois pas le même résultat avec mes données.
Mon fichier node.json ressemble:
{
"config": { "log": "info" },
"source": { "file": { "path": "./node.csv" } },
"extractor": { "csv": {} },
"transformers": [ { "vertex": { "class": "Node" } } ],
"loader": {
"orientdb": {
"dbURL": "plocal:test.orientdb",
"dbType": "graph",
"batchCommit": 1000,
"classes": [ {"name": "Node", "extends": "V"} ],
"indexes": []
}
}
}
et mon fichier data.json ressemble à ceci:
{
"config": { "log": "info" },
"source": { "file": { "path": "./data.csv" } },
"extractor": { "csv": { } },
"transformers": [
{ "vertex": { "class": "Data" } },
{ "edge": { "class": "Source",
"joinFieldName": "Label1",
"lookup": "Node.Label1",
"joinFieldName": "Label2",
"lookup": "Node.Label2",
"direction": "in"
}
}
],
"loader": {
"orientdb": {
"dbURL": "plocal:test.orientdb",
"dbType": "graph",
"batchCommit": 1000,
"classes": [ {"name": "Data", "extends": "V"},
{"name": "Source", "extends": "E"}
],
"indexes": []
}
}
}
Après avoir couru ces derniers, je reçois cette sortie quand je fais une recherche le résultat :
orientdb {db=test.orientdb}> SELECT FROM V
+----+-----+------+------+------+-------------------+----+-------------+
|# |@RID |@CLASS|Label1|Label2|out_Source |Data|in_Source |
+----+-----+------+------+------+-------------------+----+-------------+
|0 |#25:0|Node |Alpha |A |[#41:0,#43:0,#47:0]| | |
|1 |#26:0|Node |Alpha |B |[#45:0] | | |
|2 |#27:0|Node |Alpha |C | | | |
|3 |#28:0|Node |Bravo |A |[#42:0,#44:0,#48:0]| | |
|4 |#29:0|Node |Bravo |B |[#46:0] | | |
|5 |#33:0|Data |Alpha |A | |10 |[#41:0,#42:0]|
|6 |#34:0|Data |Alpha |A | |20 |[#43:0,#44:0]|
|7 |#35:0|Data |Alpha |B | |30 |[#45:0,#46:0]|
|8 |#36:0|Data |Bravo |A | |99 |[#47:0,#48:0]|
+----+-----+------+------+------+-------------------+----+-------------+
9 item(s) found. Query executed in 0.012 sec(s).
Ceci est incorrect. Je ne veux pas Edges # 42: 0, # 44: 0, # 46: 0 et # 47: 0:
#42:0 connects Node(Bravo,A) and Data(Alpha,A)
#44:0 connects Node(Bravo,A) and Data(Alpha,A)
#46:0 connects Node(Bravo,B) and Data(Alpha,B)
#47:0 connects Node(Alpha,A) and Data(Bravo,A)
Il ressemble à ajouter plusieurs entrées joinFieldName
dans le transformateur entraîne dans une opération OU, mais j'aimerais un 'ET' ici.
Est-ce que quelqu'un sait comment résoudre ce problème? Je ne suis pas sûr de ce que je fais différemment que l'autre question StackOverflow ...
avez-vous trouvé le correctif pour cela? J'ai le problème similaire. –
J'ai trouvé une solution de contournement et j'ai pensé à la partager. –