最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[Neo4j] 实现图数据库TigerGraph Group By + Order By

[复制链接]
跳转到指定楼层
楼主
发表于 2018-9-3 12:25:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

一直引人注目的实时图数据库TigerGraph最近终于出了Developer Edition版本供大家熟悉使用,TigerGraph是使用其自己研发的Gsql来实现各种数据分析,本人也下载试用了一下,感觉功能还是很强大的,在此和大家分享一些使用的技巧。

TigerGraph下载地址:https://www.tigergraph.com/download/

借着最近世界杯的氛围,以足球为内容为大家举例实现TigerGraph中的Group By + Order By功能。

首先,我们把图中的顶点分为三个类型:footballer(球员),club(俱乐部),country(国家)。footballer顶点属性有:name,age,position。club顶点属性有:name,city。country顶点属性有:name,continent。

其次,我们来定义边的关系:footballer--(belong_to)-->club,club--(in)-->country,footballer--(belongs_to)-->country。举例:梅西--(属于)-->(巴塞罗那),巴塞罗那--(属于)-->西班牙,梅西--(属于)-->阿根廷。 像这样的一个图形,我们可以根据实际情况做很多数据分析,为了让大家简单的理解TigerGraph的Gsql语言,我们只实现一个简单的统计功能,分析不同年龄的球员数量,并根据年龄倒排序。

在Gsql中,是没有关键字GroupBy的,但它提供了很多Accumulators,正是因为这些Accumulators才能使得使用TigerGraph时实现底层的并行机制。这一次我们首先运用的是GroupByAccum(),它可以实现我们比较了解的Group By方法。其次,我们需要使用其中略微复杂的HeapAccum(),它能够为我们实现最最关键的Order by方法。虽然Gsql有Order By关键字,但想要实现Group By之后的排序,我们目前使用HeapAccum()更合理且更快速。

实现方法如下:

[AppleScript] 纯文本查看 复制代码
CREATE QUERY groupby(INT num) FOR GRAPH MyGraph { // num参数用于自定义返回结果的数量
    TYPEDEF tuple<INT age, INT nums> ageResults; //创建一个元组,用于保存年龄和数量
    HeapAccum<ageResults>(num, nums DESC) @@topAgeResults; // 第一个参数设置返回结果的数量,第二个参数用于设定排序的值,并设置正序和倒叙规则
    GroupByAccum<INT ages,SumAccum<INT> numt> @@group; // 第一个参数是需要被Group By的值,第二个用于统计Group By值的数量

    Footballer = {footballer.*}; // 定义顶点
    Result = SELECT f FROM Footballer:f 
              ACCUM @@group += (f.age->1); // ACCUM关键字来使用Accumulator

    //Foreach循环来取Group By的值,通过HeapAccum来最终完成排序
    FOREACH g IN @@group DO 
        @@topAgeResults += ageResults(g.ages,g.numt);
    END;
    PRINT @@topAgeResults; // 输出最终排序后的结果
}

TigerGraph的Gsql比起其他图数据库的语言,有其自身的特点,且针对并行运行有着很好的优化。 本文仅仅只是抛砖引玉,想进一步了解TigerGraph的Gsql,可以进入官网学习了解。

官网Gsql学习网址:https://doc.tigergraph.com/GSQL- ... rying-ORDERBYClause


楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-3 06:54

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表