前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图数据库无缝集成Tushare接口

图数据库无缝集成Tushare接口

作者头像
马超的博客
发布2022-09-02 10:33:39
5750
发布2022-09-02 10:33:39
举报
文章被收录于专栏:马超的博客

@TOC[1] Here's the table of contents:

  • • 一、Tushare介绍
  • • 二、集成Tushare接口
  • • 三、使用接口数据

图数据库无缝集成Tushare接口

使用第三方API,有助于我们快速集成数据,构建业务分析需要的知识图谱数据。这篇文章主要介绍如何将Tushare HTTP接口集成到图数据库,并使用Cypher构建知识图谱。

在开始集成前,请确保你的图数据库安装了APOC组件,并保证apoc.load.jsonParams过程可以正常使用。APOC同时还支持JSON Path,即以特定模式搜索JSON文档中的数据项并返回其内容,其概念类似应用于XML的XPath和应用于HTML的jQuery。更多使用方式可以查看Neo4j社区技术专家俞博士的文章Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.5) - 导入JSON数据[2]。

一、Tushare介绍

Tushare[3]是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。

Tushare官网

二、集成Tushare接口

在开始集成之前请确保你有一个Tushare的访问账号。 在图数据库的安装目录下找到conf文件夹,并在neo4j.conf文件中为Tushare HTTP API的URL定义别名,新增一行配置即可。修改配置后,重启数据库服务即可。

代码语言:javascript
复制
apoc.json.tushare.url=http://api.tushare.pro

三、使用接口数据

现在我们可以编写Cypher代码很方便地从Tushare获取数据了。下面我将演示一个申万成分股图谱构建的案例。请注意在使用Cypher脚本时请设置私有token。

下面的代码通过分批循环调用首先从stock_basic接口获取到股票代码,然后再使用股票代码获取申万成分股时间序列数据。每个股票代码调用index_member接口之前,设置了执行四百万次加法运算表示进行延时1~2秒,这个操作的目的是为了保证HTTP接口调用时不要超过接口频率限制。

  • • stock_basic接口

stock_basic接口

  • • index_member接口

index_member接口

代码语言:javascript
复制
//循环获取所有股票代码
WITH RANGE(1,10) AS list,1000 AS limit
UNWIND list AS num
WITH num*limit AS offset,limit
//分批获取股票代码
WITH 
    '{"api_name":"stock_basic","token":"xxxxxxxxxxx","params":{"limit":"'+limit+'","offset":"'+offset+'"},"fields":"ts_code"}' AS payload
CALL apoc.load.jsonParams(
    'tushare',
    NULL,
    payload,
    NULL,
    {}) yield value
WITH value.data.has_more AS has_more,value.data.items AS stocks
WHERE has_more
//获取申万成分数据
WITH has_more,stocks
UNWIND stocks AS stock
WITH stock
//延时执行【HTTP API对调用频率有限制,让函数执行四百万次加法,耗时大概1~2秒】
WITH RANGE(1,2000) AS l,stock UNWIND l AS a UNWIND l AS b WITH SUM(a+b) AS delay,stock
WITH 
    '{"api_name":"index_member","token":"xxxxxxxxxxx","params":{"ts_code":"'+stock[0]+'"},"fields":"index_code,index_name,con_code,con_name,in_date,out_date,is_new"}' AS payload
CALL apoc.load.jsonParams(
    'tushare',
    NULL,
    payload,
    NULL,
    {}) yield value
WITH value.data.items AS items
//构建申万行业成分股图谱
UNWIND items AS item
WITH item
MERGE (stk:股票 {code:item[2]}) SET stk+={name:item[3]+'('+item[2]+')'}
MERGE (hy:申万行业 {code:item[0]}) SET hy+={name:item[1]+'('+item[0]+')'}
CREATE (stk)-[r:属于]->(hy) SET r+={in_date:item[4],out_date:item[5],is_new:item[6]}

申万行业成分股时序图谱

引用链接

[1] TOC: 图数据库无缝集成Tushare接口 [2] Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.5) - 导入JSON数据: https://blog.csdn.net/GraphWay/article/details/116225774 [3] Tushare: https://www.tushare.pro/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马超的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 图数据库无缝集成Tushare接口
    • 一、Tushare介绍
      • 二、集成Tushare接口
        • 三、使用接口数据
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档