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