ultraxia / DataV-For-Nemo

SNH48-费沁源应援会基于阿里云DataV的数据可视化系统

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DataV For Nemo

简介

SNH48-费沁源应援会基于阿里云DataV的数据可视化系统

直达链接:费沁源应援会集资监控系统

各组件介绍

modian_monitor.py

  • 该组件是实现数据可视化的基础,用于实时存储新产生的数据至服务器数据库

dataCompensation.py

  • 数据补偿组件,受网络环境等因素影响,modian_monitor.py有极小概率会丢失订单,dataCompensation.py会比对摩点API接口返回数据和数据库中存储数据是否一致,并将遗漏订单及时补偿,保证服务的稳定性

base_monitor.py

  • 用于监控竞争对手的集资情况,每隔一段时间更新数据库中竞争对手的集资数据

auto_add_monitor.py

  • 该组件为base_monitor.py的升级版,base_monitor.py虽能及时更新数据,但使用久后暴露出一个问题,若竞争对手开设新项目,需要手动添加至监控列表,人工干预效率极低,auto_add_monitor.py通过监控用户主页,能自动将竞争对手新开设的项目加入监控列表,并通过日志提醒,实现整个监控体系的自动化

jzdaily.py

  • 该组件用于存储集资趋势图所依赖的单日数据概况,配合crontab命令定时执行

部署文档

前期准备
  1. 在本地数据库中创建存放订单数据的数据表(示例文档以strawberry作为表名)
CREATE TABLE `strawberry` (
`pro_id` varchar(10) DEFAULT NULL,
`user_id` varchar(10) DEFAULT NULL,
`nickname` varchar(50) NOT NULL,
`backer_money` double(10,2) NOT NULL,
`pay_time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  1. 在本地数据库中创建存放单日数据概况的数据表(示例文档以jzdaily作为表名)
 CREATE TABLE `jzdaily` (
  `date` date NOT NULL,
  `moneyNum` double(10,2) NOT NULL,
  `peopleNum` int(10) NOT NULL,
  `orderNum` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

modian_monitor.py 的相关配置

  1. 编辑modian_monitor.py

    • 根据实际情况,修改第12-23 行数据库连接的相关代码

    • 将第78行代码中的pro_id修改为你想要监控的摩点项目编号

    • 程序默认每10秒发起一次轮询,若要修改时间间隔,请将第80行代码sched.add_job(newOrder, 'interval', seconds=10) 中seconds的参数值修改为你想设定的时间,同时请将第55行代码中的数值修改为你设定的seconds值

    • 示例文档的表名称为strawberry ,若在建表时修改了名称,请同时修改第68行代码中的表名称

  2. 在终端输入python modian_monitor.py 命令开始监控

    (Tips:监控期间执行其他操作请另建一个终端窗口)

dataCompensation.py 的相关配置

  1. 编辑dataCompensation.py

    • 根据实际情况,修改第16-27 行数据库连接的相关代码
    • 将第115行代码中的pro_id修改为你想要监控的摩点项目编号
    • 若修改了表名,请同时修改第39、48、89行SQL语句中的代码
  2. 在终端(Linux)输入crontab -e设置定时任务

    */5 * * * * /usr/local/bin/python /root/dataCompensation.py      #每5分钟执行一次
    

开通阿里云DataV服务并进行相关配置

  1. 进入阿里云官网开通DataV服务
  2. 开通服务后,点击新建可视化,自行选择相关模板和组件
  3. 选择任意组件,在配置栏中的数据源中选择数据库 ,并根据提示连接到自己的数据库

各组件对应SQL语句(以费沁源应援会集资监控系统为例)

  1. 数字翻牌器(左侧单日个人排名)

    select nickname,sum(backer_money) from strawberry
    where DATE_FORMAT(pay_time,'%m-%d') = DATE_FORMAT(now(),'%m-%d')
    group by user_id
    order by sum(backer_money) desc 
    limit 0,1;
    
    字段 映射
    name nickname
    value sum(bakcer_money)

    第一个数字翻牌器配置完成后,复制2份,并依次对SQL语句最后一行的limit 0,1进行相应修改

    例:单日集资第二名SQL语句的最后一行为limit 1,1,第三名为limit 2,1 ,以此类推

  2. 双轴折线图(左侧集资趋势图)

    select * from 
    (select moneyNum ,
    peopleNum ,
    DATE_FORMAT(date,'%m-%d') as date
    from jzdaily 
    group by DATE_FORMAT(date,'%m-%d') 
    desc limit 7) aa 
    order by date asc;
    
    字段 映射
    x date
    y moneyNum
    z peopleNum

    该趋势图默认显示7天内集资数据,可通过修改SQL语句中的limit 7进行相应设置

  3. 数字翻牌器(今日达成)

    SELECT sum(backer_money) FROM strawberry 
    where DATE_FORMAT(pay_time,'%m-%d') = DATE_FORMAT(now(),'%m-%d');
    
    字段 映射
    value sum(backer_money)
  4. 轮播列表(右侧轮播图)

    SELECT nickname,backer_money,
    DATE_FORMAT(pay_time,'%m-%d %H:%i:%s')
    FROM strawberry 
    order by pay_time desc 
    limit 30;
    
    标签名 列字段名 列显示名
    标签1 nickname ID
    标签2 backer_money 金额
    标签3 DATE_FORMAT(pay_time,'%m-%d %H:%i:%s') 支持时间

    (注:在样式中修改)

    该轮播图默认显示最近30条数据记录,可通过修改SQL语句中的limit 30进行相应设置

更新记录

2018.05.25更新:优化了部分SQL语句,感谢啤酒瓶几提出的宝贵建议

2018.05.01更新:完善README,新增各组件对应SQL语句,方便无SQL基础的同学配置

2018.04.18更新:完善了README中的部署文档

2018.04.14更新:新增jzdaily.py模块,用于存储当天集资概况数据至数据库

2018.04.09更新:初次更新,共开放auto_add_monitor.py,base_monitor.py,dataCompensation.py,modian_monitor.py四个组件的源码

写在最后

目前文档只更新了集资监控系统的相关配置,竞争对手监控系统的相关文档暂不发布,有兴趣的同学可以根据源码自行研究(总得给人留点家底吧)。同时由于本人编码水平有限,还请各位多多包涵~如果在配置过程中遇到问题,欢迎向我提交issues,也可通过邮箱与我联系,看到会第一时间回复。

广告位

如果你觉得这些代码能帮上点忙,欢迎点击链接支持一下我们番茄鱼,有你陪伴,梦想并不孤单。

About

SNH48-费沁源应援会基于阿里云DataV的数据可视化系统


Languages

Language:Python 100.0%