需要加入dse中的顶点
Posted
技术标签:
【中文标题】需要加入dse中的顶点【英文标题】:need to join the vertex in dse 【发布时间】:2019-03-16 14:54:43 【问题描述】:我已经创建了类似的属性和顶点
schema.propertyKey('REFERENCE_ID').Int().multiple().create(); schema.propertyKey('Name').Text().single().create(); schema.propertyKey('PARENT_NAME').Text().single().create(); ………… .. schema.propertyKey('XXX').Text().single().create(); schema.vertexLabel('VERT1').properties("REFERENCE_ID",.."PROPERTY10"....."PROPERTY15")//15 特性 schema.vertexLabel('VER2').properties("REFERENCE_ID",.."PROPERTY20"......"PROPERTY35")//35 特性 schema.vertexLabel('VERT3').properties("REFERENCE_ID",.."PROPERTY20"....."PROPERTY25")//25 特性 schema.vertexLabel('VERT4').properties("REFERENCE_ID",.."PROPERTY20"....."PROPERTY25")//25 属性
并使用 DSG GRAPHLOADER(CSV TO(VERTEX))
加载 csv 数据。
并创建边缘
schema.edgeLabel('ed1').single().create() schema.edgeLabel('ed1').connection('VERT1', 'VER2').add() schema.edgeLabel('ed1').single().create() schema.edgeLabel('ed1').connection('VERT1', 'VERT3').add() schema.edgeLabel('ed2').single().create() schema.edgeLabel('ed2').connection('VERT3','VERT4').add()
但我不知道如何在顶点和边之间映射数据。我想加入所有这 4 个顶点。你能帮忙吗?
我是 dse 的新手。我刚刚在datastax studio中成功运行了上面的代码,我可以看到加载的数据。我需要加入顶点...
Sql 代码:我想在 dse Germlin 中使用相同的代码。
select v1.REFERENCE_ID,v2.name,v3.total from VERT1 v1
join VER2 v2 on v1.REFERENCE_ID=v2.REFERENCE_ID
join VERT3 v3 on v2.sid=v3.sid
【问题讨论】:
【参考方案1】:DSE 中有 2 个“主要”选项用于添加边缘数据,如果您还使用 DSE Analytics,则还有一个。
一个是使用 Gremlin,就像这里记录的一样 - https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/graph/using/insertTraversalAPI.html
这种方法是一种基于遍历的方法,可能不是批量操作的最佳/最快选择
另一种解决方案是使用图形加载器,请在此处查看带有 .asEdge 代码示例的示例 - https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/graph/dgl/dglCSV.html#dglCSV
如果您启用了 DSE 分析,您还可以使用 DataStax 的 DSE GraphFrame 实现(它利用 Spark)来执行此任务。这是一个例子 - https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/graph/graphAnalytics/dseGraphFrameImport.html
【讨论】:
这工作正常 g.V().hasLabel("vert1").as("a",'REFERENCE_ID','S_NAME')。 V().hasLabel("vert2").as("b",'TYPE','PHYSICAL') .filter(has("REFERENCE_ID","10234")) .where("a", eq("b ")) .by("REFERENCE_ID") .V().hasLabel("vert3").as("c",'HEIGHT','P_REFERENCE') .where("a", eq("c")) .by("REFERENCE_ID") .select("REFERENCE_ID",'S_NAME',TYPE','PHYSICAL','HEIGHT','P_REFERENCE') .by("REFERENCE_ID") .by('S_NAME') .by( 'TYPE') .by('PHYSICAL') .by('HEIGHT') .by('P_REFERENCE')以上是关于需要加入dse中的顶点的主要内容,如果未能解决你的问题,请参考以下文章