Helping the industrial Internet of Things, the design of the ST layer of industrial big data [25]

04: ST layer design

  • Goal : Master the design of the ST layer

  • path

    • step1: function
    • step2: source
    • step3: Requirements
  • implement

    • Function : data application layer, used to support the results of applying data to reports on all external topics

      • Provide external reports on all operations of the entire company
    • Source : The final aggregation of the subject fact data of the DWB layer associated with the dimension table of the DWS layer

      • DWS: dimension table: time, region, gas station, organization

        维度id	维度值
        
      • DWB: work order, call center, expense

        维度id	指标
        
    • Requirements : According to the divisional requirements of one-stop manufacturing business topics, construct ST layer data for each topic

      维度id	维度值		聚合指标
      
  • summary

    • Master the design of ST layer

05: Service Domain: Work Order Theme Analysis

  • Goal : Master the needs analysis of the ticket topic

  • path

    • step1: Requirements
    • step2: Analysis
  • implement

    • Requirements : Count the results of work order topic indicators in different dimensions

      Field Name field description source
      owner_process Assignment method - handle the quantity by yourself one_make_dwb.fact_call_service
      tran_process Assignment method - the number of assigned workers one_make_dwb.fact_call_service
      wakerorder_num Total number of work orders one_make_dwb.fact_worker_order
      wokerorder_num_max Maximum total number of work orders one_make_dwb.fact_worker_order
      wokerorder_num_min Minimum total number of work orders one_make_dwb.fact_worker_order
      wokerorder_num_avg Average total number of work orders one_make_dwb.fact_worker_order
      install_sumnum Assignment type - total number of installations one_make_dwb.fact_worker_order
      repair_sumnum Dispatch Type - Total Repairs one_make_dwb.fact_worker_order
      remould_sumnum Type of dispatch - total number of inspections one_make_dwb.fact_worker_order
      inspection_sumnum Assignment type - total number of renovations one_make_dwb.fact_worker_order
      alread_complete_sumnum Total Completion one_make_dwb.fact_worker_order
      customer_classify_zsh Customer Type - Sinopec Quantity one_make_dws.dim_oilstation
      customer_classify_jxs Customer Type - Number of Dealers one_make_dws.dim_oilstation
      customer_classify_qtzx Customer Type - Other Direct Sales Quantity one_make_dws.dim_oilstation
      customer_classify_zsy Customer Type - PetroChina Quantity one_make_dws.dim_oilstation
      customer_classify_qtwlh Customer Type - Number of Other Correspondents one_make_dws.dim_oilstation
      customer_classify_zhjt Customer Type - Number of Sinochem Group one_make_dws.dim_oilstation
      customer_classify_zhy Customer Type - CNOOC Quantity one_make_dws.dim_oilstation
      customer_classify_gys Customer Type - Number of Suppliers one_make_dws.dim_oilstation
      customer_classify_onemake Customer Type - One-Stop Manufacturing** Quantity one_make_dws.dim_oilstation
      customer_classify_fwy Customer Type - Number of Servers one_make_dws.dim_oilstation
      customer_classify_zt Customer Type - China Railway Quantity one_make_dws.dim_oilstation
      customer_classify_hzgs Customer Type - Number of Joint Ventures one_make_dws.dim_oilstation
      customer_classify_jg Customer Type - Military Supply Quantity one_make_dws.dim_oilstation
      customer_classify_zhhangy Customer Type - Quantity of CAO one_make_dws.dim_oilstation
      dws_day string Date dimension - by day one_make_dws.dim_date
      dws_week string Date dimension - by week one_make_dws.dim_date
      dws_month string Date dimension - by month one_make_dws.dim_date
      oil_type string Gas station type one_make_dws.dim_oilstation
      oil_province Province of the gas station one_make_dws.dim_oilstation
      oil_city string City where the gas station belongs one_make_dws.dim_oilstation
      oil_county string Gas station area one_make_dws.dim_oilstation
      customer_classify customer type one_make_dws.dim_oilstation
      customer_province Customer's province one_make_dws.dim_oilstation
      • Call Center Topic Facts
    • analyze

      • index

        • The number of self-processing work orders and the number of dispatched work orders
        • Total number of work orders, maximum value, minimum value, average value
        • Total number of installations, total number of repairs, total number of inspections, total number of renovations, total number of completed projects
        • The number of Sinopec, the number of distributors, the number of other direct sales, the number of PetroChina, the number of other contacts, the number of Sinochem Group, and the number of CNOOC
        • Number of suppliers, number of one-stop manufacturing, number of service engineers, number of China Railway, number of joint ventures, number of military supplies, and number of China Aviation Oil
      • dimension

        • Date dimensions: day, week, month
        • Gas station dimensions: type, province, city, region
        • Customer dimension: type, province
      • data sheet

        • fact sheet

          • fact_worker_order:工单事实表

            select
                wo_num, --工单数量
                callaccept_id,--来电受理单id
                oil_station_id, --油站id
                dt --日期
            from fact_worker_order;
            
          • fact_call_service:呼叫中心事实表

          select      
          id,--来电受理单id    
          process_way_name --处理方式  
          from fact_call_service;  
          

          image-20211013101145353

        • 维度表

          • 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;
            

            image-20211013101244275

          • 实现分析

          -- 工单事实表
          select
          sum(case when b.process_way_name = '自己处理' then 1 else 0
          end) as own,
          sum(case when b.process_way_name = '转派工' then 1 else 0
          end) as other,
          sum(a.wo_num), --工单数量
          max(a.wo_num),
          min(a.wo_num),
          avg(a.wo_num),
          sum(a.install_num),
          sum(a.repair_num),
          sum(a.remould_num),
          sum(a.inspection_num),
          sum(a.alread_complete_num),
          sum(case when c.customer_classify_name = '中石化' then 1
          else 0 end) as zsy_count,
          ……
          a.callaccept_id,--来电受理单id
          c.id, --油站id
          c.company_name,--公司名称
          c.province_name,--省份名称
          c.city_name,--城市名称
          c.county_name,--区域名称
          c.customer_classify_name,--客户名称
          c.customer_province_name ,--客户省份
          d.date_id,--天
          d.week_in_year_id,--周
          d.year_month_id --月
          from fact_worker_order a
          left join fact_call_service b on a.callaccept_id = b.id
          left join one_make_dws.dim_oilstation c on a.oil_station_id =
          c.id
          left join one_make_dws.dim_date d on a.dt = d.date_id
          group by
          c.id, --油站id
          c.company_name,--公司名称
          c.province_name,--省份名称
          c.city_name,--城市名称
          c.county_name,--区域名称
          c.customer_classify_name,--客户名称
          c.customer_province_name ,--客户省份
          d.date_id,--天
          d.week_in_year_id,--周
          d.year_month_id; --月;
          
  • 小结

    • 掌握工单主题的需求分析

06:服务域:工单主题实现

  • 目标实现工单主题表的维度指标构建

  • 实施

    • 建库

      create database if not exists one_make_st;
      
    • 建表

      -- 创建工单主题表
      drop table if exists one_make_st.subj_worker_order;
      create table if not exists one_make_st.subj_worker_order(
          owner_process bigint comment '派工方式-自己处理数量'
          ,tran_process bigint comment '派工方式-转派工数量'
          ,wokerorder_num bigint comment '工单总数'
          ,wokerorder_num_max int comment '工单总数最大值'
          ,wokerorder_num_min int comment '工单总数最小值'
          ,wokerorder_num_avg int comment '工单总数平均值'
          ,install_sumnum bigint comment '派工类型-安装总数'
          ,repair_sumnum bigint comment '派工类型-维修总数'
          ,remould_sumnum bigint comment '派工类型-巡检总数'
          ,inspection_sumnum bigint comment '派工类型-改造总数'
          ,alread_complete_sumnum bigint comment '完工总数'
          ,customer_classify_zsh bigint comment '客户类型-中石化数量'
          ,customer_classify_jxs bigint comment '客户类型-经销商数量'
          ,customer_classify_qtzx bigint comment '客户类型-其他直销数量'
          ,customer_classify_zsy bigint comment '客户类型-中石油数量'
          ,customer_classify_qtwlh bigint comment '客户类型-其他往来户数量'
          ,customer_classify_zhjt bigint comment '客户类型-中化集团数量'
          ,customer_classify_zhy bigint comment '客户类型-中海油数量'
          ,customer_classify_gys bigint comment '客户类型-供应商数量'
          ,customer_classify_onemake bigint comment '客户类型-一站制造**数量'
          ,customer_classify_fwy bigint comment '客户类型-服务员数量'
          ,customer_classify_zt bigint comment '客户类型-中铁数量'
          ,customer_classify_hzgs bigint comment '客户类型-合资公司数量'
          ,customer_classify_jg bigint comment '客户类型-军供数量'
          ,customer_classify_zhhangy bigint 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_worker_order'
      ;
      
    • 构建

      insert overwrite table one_make_st.subj_worker_order partition(month = '202101', week='2021W1', day='20210101')
      select
          sum(case when fcs.process_way_name = '自己处理' then 1 else 0 end) owner_process, --工单自处理个数
      	sum(case when fcs.process_way_name = '转派工' then 1 else 0 end) tran_process,    --工单转派工个数
      	sum(fwo.wo_num) wokerorder_num,                                      --工单总数
      	max(fwo.wo_num) wokerorder_num_max,                                  --最大值
          min(fwo.wo_num) wokerorder_num_min,                                  --最小值
      	avg(fwo.wo_num) wokerorder_num_avg,                                  --平均值
      	sum(fwo.install_num) install_sumnum,                                     --安装总数
      	sum(fwo.repair_num) repair_sumnum,                                       --维修总数
          sum(fwo.remould_num) remould_sumnum,                                     --巡检总数
      	sum(fwo.inspection_num) inspection_sumnum,                               --改造总数
      	sum(fwo.alread_complete_num) alread_complete_sumnum,                     --完工总数
          sum(case when oil.customer_classify_name ='中石化' then 1 else 0 end) customer_classify_zsh,       --中石化数量
      	sum(case when oil.customer_classify_name ='经销商' then 1 else 0 end) customer_classify_jxs,       --经销商数量
          sum(case when oil.customer_classify_name ='其他直销' then 1 else 0 end) customer_classify_qtzx,      --其他直销数量
      	sum(case when oil.customer_classify_name ='中石油' then 1 else 0 end) customer_classify_zsy,       --中石油数量
          sum(case when oil.customer_classify_name ='其他往来户' then 1 else 0 end) customer_classify_qtwlh,     --其他往来户数量
      	sum(case when oil.customer_classify_name ='中化集团' then 1 else 0 end) customer_classify_zhjt,      --中化集团数量
          sum(case when oil.customer_classify_name ='中海油' then 1 else 0 end) customer_classify_zhy,       --中海油数量
      	sum(case when oil.customer_classify_name ='供应商' then 1 else 0 end) customer_classify_gys,        --供应商数量
          sum(case when oil.customer_classify_name ='一站制造**' then 1 else 0 end) customer_classify_onemake,     --一站制造数量
      	sum(case when oil.customer_classify_name ='服务工程师' then 1 else 0 end) customer_classify_fwy,          --服务工程师数量
          sum(case when oil.customer_classify_name ='中铁' then 1 else 0 end) customer_classify_zt,           --中铁数量
      	sum(case when oil.customer_classify_name ='合资公司' then 1 else 0 end) customer_classify_hzgs,         --合资公司数量
          sum(case when oil.customer_classify_name ='军供' then 1 else 0 end) customer_classify_jg,             --军供数量
      	sum(case when oil.customer_classify_name ='中航油' then 1 else 0 end) customer_classify_zhhangy,         --中航油数量
          dd.date_id dws_day,                                                  --时间天
      	dd.week_in_year_id dws_week,                                         --时间周
      	dd.year_month_id dws_month,                                          --时间月
      	oil.company_name oil_type,                                           --油站类型
      	oil.province_name oil_province,                                      --油站省份
          oil.city_name oil_city,                                              --油站城市
      	oil.county_name oil_county,                                          --油站地区
      	oil.customer_classify_name customer_classify,                        --客户类型
      	oil.customer_province_name customer_province                         --客户省份
      --工单事务事实表
      from one_make_dwb.fact_worker_order fwo
      --获取自处理个数,转派单个数
      left join one_make_dwb.fact_call_service fcs on fwo.callaccept_id = fcs.id
      --关联日期维度
      left join one_make_dws.dim_date dd on fwo.dt = dd.date_id
      --关联油站维度
      left join one_make_dws.dim_oilstation oil on fwo.oil_station_id = oil.id
      where dd.year_month_id = '202101'and dd.week_in_year_id = '2021W1' and  dd.date_id = '20210101'
      --按照维度字段分组
      group by dd.date_id, dd.week_in_year_id, dd.year_month_id, oil.company_name, oil.province_name, oil.city_name, oil.county_name,oil.customer_classify_name, oil.customer_province_name
      ;
      
  • 小结

    • 实现工单主题表的维度指标构建

Guess you like

Origin blog.csdn.net/xianyu120/article/details/132062659