資料倉庫-需求溝通和開發示例
阿新 • • 發佈:2020-09-22
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