数据中心系统~随想~开发

项目文档

一、需求背景

运营侧在商业化活动、主播品类运营等方面需要数据支撑,主要范围包括:活动设计、效果评估,用户拉新拉回流,付费转换等;
产品侧在商业化玩法,功能设计等方面需要数据监控,主要范围包括:点位数据上报,玩法付费,用户活跃留存等
​ 由于此类数据需求频繁且灵活,之前有两种解决方案
​ 1、BI报表,将常用数据做成固化报表,供用户直接查询。缺点:报表的开发维护成本高,且难以灵活应对分析需求。
​ 2、SQL取数模板,将用户的取数分析需求固化成SQL模板,用户仅需修改日期等参数,即可实现后续复用。缺点:通用性较低,用户体验较差。
​ 对此,需要再次优化,基本需求如下:

  • 通过开发一个SQL生成系统,实现以下两点:
    • 用户自助。降低使用门槛,用户仅需入门Excel,即可应对复杂SQL取数。
    • 内容创造。用户可生成、发布自身的取数或分析模板,与他人交流使用。

二、项目开发

1. 技术选型

​ Python + Bootstrap + Django + Mysql

2. 功能列表

  • 系统管理

    • 用户管理:用户基本信息、权限分配

      搜索框:部门,角色,用户名 添加 删除

      用户名 昵称 性别 电话 邮箱 所在部门 岗位 角色 操作
      zhangsan 张三 12345678 10@qq.com 直播业务部 运营 管理员
      组长
      普通成员
      修改
      删除
    • 字典管理:

      • TDW数据字典:数据仓库层的数据表信息,包括表名、字段名、字段说明等。

        搜索框:表名,字段名,字段说明

        表备注:

        使用时需限制plat_id=255
        
        库名 表名 字段名 数据类型 字段说明
        db table ftime bigint 统计日期(格式:YYYYMMDD)
      • Mysql数据字典:数据应用层的数据表信息,包括表名、字段名、字段说明等。

        搜索框:表名,字段名,字段说明

        表备注:

        使用时需限制plat_id=255
        
        库名 表名 字段名 数据类型 字段说明
        db table ftime bigint(20) 统计日期(格式:YYYYMMDD)
    • 行为日志:

      搜索框:操作人

      日志名称 操作人 日志类型 ip地址 日志消息 记录时间
      用户登录 admin 登录 127.0.0.1 后台登录失败 2019-04-08 02:16:30
  • 开发中心

    • SQL生成:通过拉取表字段,确定维度和度量值,生成SQL,并预览结果

      第1步:

      1. 表设计:

      (1)选择表:

      | 库名 | 表名 |
      | ---- | ------ |
      | db | tableA |

      (2)筛选:

      条件 字段 操作
      条件1 ftime >=20200101 and <= 20201231 编辑

      (3)行:

      维度 操作
      ftime
      gamename 自定义操作(映射维表:关联条件:gameappid=gameappid,表名:d_table,输出结果:gamename)

      (4)值:

      度量值 操作
      watch_time 求和 自定义操作
      watch_uv 去重 自定义操作(当 watch_time>0 则 login_id 其他情况 空)
      tran_amt 求和 自定义操作
      amt_uv 去重 自定义操作(当 tran_amt>0 则 login_id 其他情况 空)
      1. 预览结果:
      ftime gamename watch_time watch_uv tran_amt amt_uv
      20210101 王者荣耀 100 10 1 1
      1. 复制SQL:

        select 
        	ftime,
        	gamename,
        	watch_time,
        	watch_uv,
        	tran_amt,
        	amt_uv	
        from 
        (select 
        	ftime,
        	gameappid,
        	sum(watch_time) as watch_time,
        	count(distinct case when watch_time>0 then login_id else null end) as watch_uv,
        	sum(tran_amt) as tran_amt,
        	count(distinct case when tran_amt>0 then login_id else null end) as amt_uv
        from db::tableA
        where ftime >=20200101 and <= 20201231
        group by ftime,
        	gameappid
        )t1 left join (
            select gameappid,max(gamename) as gamename
            from d_table
            group by gameappid
        )t2 on t1.gameappid = t2.gamename
        

        保存为模板(需要 字段说明,及使用备注)

      2. 结果命名:

      temp_table_a
      

      第2步:

      ​ 基于之前的结果,组合成新结果

    • 模板中心

      • 我的模板:管理自己的模板,对其进行增删改查操作

        搜索框:创建人,创建时间,模板名称, 添加 删除

        类型 模板名称 创建人 创建时间 操作
        运营 游戏的每日观看时长和消费金额 张三 2021-01-01 00:00:00 复制 详情 删除

        详情:
        跳转 SQL生成页面

      • 模板中心:搜索参考其他人的模板,导入我的模板

        搜索框:创建人,创建时间,模板名称, 添加 保存至我的模板

        类型 模板名称 创建人 创建时间 操作
        运营 游戏的每日观看时长和消费金额 张三 2021-01-01 00:00:00 复制 详情 删除

3. 项目架构

4. 开发流程

1. 基础环境准备

安装Anacoda、安装并激活Pycharm,安装Mysql,配置svn,配置虚拟环境

2. 具体步骤
1. 初始化环境

1、新建Django项目,命名 DataCenter

2、新建APP应用

# cmd切换至D盘,进入工作目录
d:
cd D:\svn\django
# 新建项目 DataCenter
django-admin startproject DataCenter
# 进入项目根目录(manage.py同级目录)
cd D:\svn\django\DataCenter
# 新建"系统管理"应用模块
python manage.py startapp System
# 新建"开发中心"应用模块
python manage.py startapp DevTools

3、新建模板文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值