09: 서비스 도메인: 주제 분석 구현 설치
-
목표 : 설치 테마의 요구사항 분석 및 구현 마스터
-
길
- 1단계: 요구 사항
- 2단계: 분석
- 3단계: 실현
-
구현하다
-
요구 사항 : 다양한 차원에서 설치 테마 지표의 결과를 계산
-
분석하다
-
Metrics : 설치수, 결제금액
-
치수
- 설치 방법
- 날짜 차원: 일, 주, 월
- 주유소 크기: 유형, 지방, 도시, 지역
- 고객 차원: 유형, 지역
-
데이터
-
사실 시트
-
fact_srv_install: 트랜잭션 팩트 테이블 설치
select inst_id, --安装单id inst_type_id, --安装方式id 1-设备安装,2-设备联调 exp_device_money, --安装费用 dt,--日期 os_id --油站id from one_make_dwb.fact_srv_install;
-
-
-
차원 테이블
-
dim_oilstation: 오일 스테이션 치수 테이블
select id,--油站id company_name,--公司名称 province_name,--省份名称 city_name,--城市名称 county_name,--区域名称 customer_classify_name,--客户名称 customer_province_name--客户省份 from dim_oilstation;
-
dim_date: 시간 차원 테이블
select date_id,--天 week_in_year_id,--周 year_month_id --月 from dim_date;
-
-
-
-
성취하다
-
빌드 테이블
create table if not exists one_make_st.subj_install( install_way string comment '安装方式' ,install_sum bigint comment '安装数量' ,sum_money int comment '支付费用' ,dws_day string comment '日期维度-按天' ,dws_week string comment '日期维度-按周' ,dws_month string comment '日期维度-按月' ,oil_type string comment '油站维度-油站类型' ,oil_province string comment '油站维度-油站所属省' ,oil_city string comment '油站维度-油站所属市' ,oil_county string comment '油站维度-油站所属区' ,customer_classify string comment '客户维度-客户类型' ,customer_province string comment '客户维度-客户所属省' ) comment '安装主题表' partitioned by (month string, week string, day string) stored as orc location '/data/dw/st/one_make/subj_install';
-
-
-
건설하다
insert overwrite table one_make_st.subj_install partition(month = '202101', week='2021W1', day='20210101') select --安装方式 max(case when install.inst_type_id = 1 then '设备安装' when install.inst_type_id = 2 then '设备联调' else '未知' end) install_way , count(install.inst_id) install_sum --安装数量 , sum(install.exp_device_money) sum_money --支付金额 , dd.date_id dws_day --日期天 , dd.week_in_year_id dws_week --日期周 , dd.year_month_id dws_month --日期月 , dimoil.company_name oil_type --油站类型 , dimoil.province_name oil_province --油站省份 , dimoil.city_name oil_city --油站城市 , dimoil.county_name oil_county --油站地区 , dimoil.customer_classify_name customer_classify --客户类型 , dimoil.customer_province_name customer_province --客户省份 --安装事务事实表 from one_make_dwb.fact_srv_install install --关联日期维度表 left join one_make_dws.dim_date dd on install.dt = dd.date_id --关联油站维度表 left join one_make_dws.dim_oilstation dimoil on install.os_id = dimoil.id where dd.year_month_id = '202101' and dd.week_in_year_id = '2021W1' and dd.date_id = '20210101' --按照维度分组 group by inst_type_id, dd.date_id, dd.week_in_year_id, dd.year_month_id, dimoil.company_name, dimoil.province_name, dimoil.city_name, dimoil.county_name, dimoil.customer_classify_name, dimoil.customer_province_name ;
-
요약
- 설치 테마의 요구 사항 분석 및 구현 마스터
10: 서비스 영역: 유지보수 테마 분석 구현
-
목표 : 유지보수 항목의 요구사항 분석 및 구현 마스터
-
길
- 1단계: 요구 사항
- 2단계: 분석
- 3단계: 실현
-
구현하다
-
요구사항 : 정비대상지표 결과를 차원이 다른 통계
-
분석하다
-
색인
- 결제수수료, 인건비, 부품비, 운송비
- 총 실패 횟수, 최대 횟수, 평균 횟수
-
치수
- 날짜 차원: 일, 주, 월
- 주유소 크기: 유형, 지방, 도시, 지역
- 고객 차원: 유형, 지역
- 물류 회사
-
데이터
-
사실 시트
-
fact_srv_repair: 트랜잭션 팩트 테이블 복구
select hour_money,--工时费用 parts_money,--配件物料费用 fars_money,--交通费用 fault_type_ids, --故障id集合 dt,--日期 os_id,--油站id ss_id --服务网点id from fact_srv_repair;
-
-
fact_srv_stn_ma: 아웃렛 자재 트랜잭션의 팩트 테이블
select ss_id,--服务网点id logi_cmp_id --物流公司id from fact_srv_stn_ma;
-
-
차원 테이블
-
dim_oilstation: 오일 스테이션 치수 테이블
select id,--油站id company_name,--公司名称 province_name,--省份名称 city_name,--城市名称 county_name,--区域名称 customer_classify_name,--客户名称 customer_province_name--客户省份 from dim_oilstation;
-
dim_date: 시간 차원 테이블
select date_id,--天 week_in_year_id,--周 year_month_id --月 from dim_date;
-
dim_logistics: 물류 차원 테이블
select type_id, --物流公司id type_name --物流公司名称 from one_make_dws.dim_logistics where prop_name = '物流公司';
-
-
-
성취하다
-
빌드 테이블
drop table if exists one_make_st.subj_repair; create table if not exists one_make_st.subj_repair( sum_pay_money decimal(20,1) comment '支付费用' ,sum_hour_money decimal(20,1) comment '小时费用' ,sum_parts_money decimal(20,1) comment '零部件费用' ,sum_fars_money decimal(20,1) comment '交通费用' ,sum_faulttype_num bigint comment '故障类型总数' ,max_faulttype_num int comment '故障类型最大数量' ,avg_faulttype_num int comment '故障类型平均数量' ,dws_day string comment '日期维度-按天' ,dws_week string comment '日期维度-按周' ,dws_month string comment '日期维度-按月' ,oil_type string comment '油站维度-油站类型' ,oil_province string comment '油站维度-油站所属省' ,oil_city string comment '油站维度-油站所属市' ,oil_county string comment '油站维度-油站所属区' ,customer_classify string comment '客户维度-客户类型' ,customer_province string comment '客户维度-客户所属省' ,logi_company string comment '物流公司维度-物流公司名称' ) comment '维修主题表' partitioned by (month String, week String, day String) stored as orc location '/data/dw/st/one_make/subj_repair';
-
-
-
건설하다
insert overwrite table one_make_st.subj_repair partition(month = '202101', week='2021W1', day='20210101') select sum(pay_money) sum_pay_money, --支付费用 sum(hour_money) sum_hour_money, --工时费用 sum(parts_money) sum_parts_money, --物料费用 sum(fars_money) sum_fars_money, --交通费用 sum(fault_type_num) sum_faulttype_num, --故障类型总数 max(fault_type_num) max_faulttype_num, --最大故障数量 avg(fault_type_num) avg_faulttype_num, --平均故障数量 dws_day, --日期天 dws_week, --日期周 dws_month, --日期月 oil_type, --油站类型 oil_province, --油站省份 oil_city, --油站城市 oil_county, --油站区域 customer_classify, --客户类型 customer_province, --客户省份 logi_company --物流公司 from ( select (hour_money + parts_money+fars_money) pay_money, hour_money, parts_money, fars_money, case when (size(split(fault_type_ids, ','))) <= 0 then 0 else (size(split(fault_type_ids, ','))) end fault_type_num, dd.date_id dws_day, dd.week_in_year_id dws_week, dd.year_month_id dws_month, dimoil.company_name oil_type, dimoil.province_name oil_province, dimoil.city_name oil_city, dimoil.county_name oil_county, dimoil.customer_classify_name customer_classify, dimoil.customer_province_name customer_province, type_name logi_company --维修事务事实表 from one_make_dwb.fact_srv_repair repair --关联日期维度表 left join one_make_dws.dim_date dd on repair.dt = dd.date_id --关联油站维度表 left join one_make_dws.dim_oilstation dimoil on repair.os_id = dimoil.id --关联网点物料事实表:获取物流公司id left join one_make_dwb.fact_srv_stn_ma fssm on repair.ss_id = fssm.ss_id --关联物流维度表:获取物流公司名称 left join ( select type_id, type_name from one_make_dws.dim_logistics where prop_name = '物流公司' ) dl on fssm.logi_cmp_id = dl.type_id where dd.year_month_id = '202101'and dd.week_in_year_id = '2021W1' and dd.date_id = '20210101' and exp_rpr_num = 1 ) repair_tmp group by dws_day, dws_week, dws_month, oil_type, oil_province, oil_city, oil_county,customer_classify, customer_province,logi_company;
-
요약
- 유지보수 항목의 요구사항 분석 및 실현 마스터