【发布时间】:2015-06-25 10:35:34
【问题描述】:
我有一个包含 Id1 和 Id2 的 CSV 文件。 Id1 和 Id2 是两个不同类的顶点。我想在 Id1 和 Id2 之间取得优势。这可以通过 ETL 实现吗?
我们可以在变压器的边缘配置中添加一些东西来实现这一点。
【问题讨论】:
标签: orientdb
我有一个包含 Id1 和 Id2 的 CSV 文件。 Id1 和 Id2 是两个不同类的顶点。我想在 Id1 和 Id2 之间取得优势。这可以通过 ETL 实现吗?
我们可以在变压器的边缘配置中添加一些东西来实现这一点。
【问题讨论】:
标签: orientdb
我会假设
这两个类是A和B
A 拥有Id1
B 拥有Id2
边缘的类是AtoB
A 和 B 实例存在于数据库中
AtoB.csv 就像
AId,BId
a1,b1
a2,b2
a2,b3
那么下面的 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" }
]
}
}
}
结果是
【讨论】: