1. 程式人生 > 實用技巧 >資料倉庫-需求溝通和開發示例

資料倉庫-需求溝通和開發示例

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