数据仓库-需求沟通和开发示例

0.需求开发之前,

 首先要确认需求,这一步很重要,
  1. 你真正想要的是什么?这个需求是否合理?
   需求的核心诉求是什么,当前有没有相应的功能或者流程改善?有时候产品想要的和说出来的不是一回事,更多的时候
   他们会把他们认为合理步骤分解,要求这么做,那么做,所以,沟通很重要,首先问他们想要什么,在什么场景下,明确
   要什么之后,然后确认现在有什么,具体怎么实现可以从开发的角度进行评估和判断。实现的资源和时间。
       常见的一些定式:
           探访原因:什么时候开始……? 不用全部
           探访层次: 你这个需求使用的频率是什么?
  2.目前我们有什么?
       目前在做的任务,优先级,人力资源,技术程度,事情要把时间这个变量加上
  3.实现你想要的需要什么?
      目前可实现的,需要多长时间,优先级是什么?
      如果有难度的话 是不是可以分阶段,分批次,是不是可以简化功能,如果不能,那是不是可以加资源。

1. 需求梳理

  -- 表:  student.dwd_t_calss_learn_d
  -- 汇总指标:
   -- 指标层级
     -- 业务域 : **业务
     -- 业务过程:**
     -- 时间周期:   2020年 起止的边界点 左右是否包含
     -- 涉及字段:   kind_cd standards
     -- 维度    :   种类  +退化维度(线上教学和线下教学)
     -- 度量:  :   单数 人数 学费
     -- 默认值和空值处理
     -- 开发注意事项: 字符串的比较和排序 与数字不同
     --  距离 int   确认单位制以及对应的度量
      -- 指标等级: 内部局部使用的测试逻辑数据,无敏感数据

2.数据探查和业务理解

  select * from student.dwd_t_calss_learn_d where sta_date=20180910
--业务确认:历史的统计逻辑
-- 数据维度确认
  select DISTINCT kind_cd    from student.dwd_t_calss_learn_d where sta_date=20180910
  select DISTINCT standards  from student.dwd_t_calss_learn_d where sta_date=20180910
  standards 规格是NULL值的,保留NULL值

3. 需求开发实战

  WITH q1 AS(
  SELECT
     t1.school_cd
    ,t1.standards_nm
    ,COUNT(DISTINCT student_id ) AS  stu_cnt
    ,ROUND(SUM(tuition_amt),4)   AS  tuition_amt
    ,COUNT(DISTINCT CASE WHEN school_kind =1 THEN student_id ELSE NULL end )  AS on_stu_cnt
    ,COUNT(DISTINCT CASE WHEN school_kind =1 THEN student_id ELSE NULL end )  AS off_stu_cnt
  FROM 
    (select   
   school_cd  
 , school_kind  
     , CASE WHEN   standards == 1                  THEN '差评'
        WHEN   standards= 1  AND standards<= 4 THEN '中评'
        WHEN   standards> 4                    THEN '好评'
        ELSE  NULL 
        END AS  standards_nm
 ,student_id  
 ,tuition_amt  
    from student.dwd_t_calss_learn_d 
    where sta_date >=20200916 AND  sta_date <=20200916
     )t1
   GROUP BY t1.school_cd, t1.standards_nm
   )
   SELECT  school_cd ,standards,on_stu_cnt,off_stu_cnt,off_stu_cnt+ on_stu_cnt as data
   FROM q1 
  ;

4 数据查验和确认

查看总的数据量
查看抽样数据  对比数据,查看一些维度数据等

5 最终脚本确认和数据服务

  drop table if EXISTS student.tmp_class_cd_learn_info_ed;
  create table   student.tmp_class_cd_learn_info_ed  stored as parquet AS 
posted @ 2020-09-22 12:48  辰令  阅读(286)  评论(0编辑  收藏  举报