Ayudando al Internet industrial de las cosas, el diseño de la capa ST de big data industrial [25]

04: diseño de capa ST

  • Objetivo : dominar el diseño de la capa ST

  • camino

    • paso 1: función
    • paso 2: fuente
    • paso 3: Requisitos
  • implementar

    • Función : capa de aplicación de datos, utilizada para respaldar los resultados de la aplicación de datos a informes sobre todos los temas externos

      • Proporcionar informes externos sobre todas las operaciones de toda la empresa.
    • Fuente : la agregación final de los datos de hechos del sujeto de la capa DWB asociada con la tabla de dimensiones de la capa DWS

      • DWS: tabla de dimensiones: hora, región, gasolinera, organización

        维度id	维度值
        
      • DWB: orden de trabajo, call center, gasto

        维度id	指标
        
    • Requisitos : de acuerdo con los requisitos divisionales de los temas comerciales de fabricación integral, construya datos de capa ST para cada tema

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

    • Domina el diseño de la capa ST

05: Dominio del servicio: análisis del tema de la orden de trabajo

  • Objetivo : Dominar el análisis de necesidades del tema del ticket

  • camino

    • paso 1: Requisitos
    • paso 2: Análisis
  • implementar

    • Requisitos : Cuente los resultados de los indicadores de tema de orden de trabajo en diferentes dimensiones

      Nombre del campo campo Descripción fuente
      propietario_proceso Método de asignación: maneje la cantidad usted mismo one_make_dwb.fact_call_service
      tran_proceso Método de asignación: el número de trabajadores asignados one_make_dwb.fact_call_service
      wakerorder_num Número total de órdenes de trabajo one_make_dwb.fact_worker_order
      orden_despertado_num_max Número total máximo de órdenes de trabajo one_make_dwb.fact_worker_order
      orden_despertado_num_min Número total mínimo de órdenes de trabajo one_make_dwb.fact_worker_order
      orden_despertado_num_avg Número total medio de órdenes de trabajo one_make_dwb.fact_worker_order
      install_sumnum Tipo de asignación - número total de instalaciones one_make_dwb.fact_worker_order
      reparación_sumnum Tipo de despacho - Reparaciones totales one_make_dwb.fact_worker_order
      remould_sumnum Tipo de envío - número total de inspecciones one_make_dwb.fact_worker_order
      inspección_sumnum Tipo de asignación: número total de renovaciones one_make_dwb.fact_worker_order
      ya_completo_sumnum Finalización total one_make_dwb.fact_worker_order
      clasificación_cliente_zsh Tipo de Cliente - Sinopec Cantidad one_make_dws.dim_oilstation
      clasificación_cliente_jxs Tipo de cliente - Número de distribuidores one_make_dws.dim_oilstation
      clasificación_cliente_qtzx Tipo de cliente: otra cantidad de ventas directas one_make_dws.dim_oilstation
      clasificación_cliente_zsy Tipo de cliente - Cantidad de PetroChina one_make_dws.dim_oilstation
      clasificación_cliente_qtwlh Tipo de Cliente - Número de Otros Corresponsales one_make_dws.dim_oilstation
      clasificación_cliente_zhjt Tipo de cliente - Número de Sinochem Group one_make_dws.dim_oilstation
      clasificación_cliente_zhy Tipo de Cliente - Número de CNOOC one_make_dws.dim_oilstation
      clasificación_cliente_gys Tipo de Cliente - Número de Proveedores one_make_dws.dim_oilstation
      customer_classify_onemake Tipo de cliente: fabricación integral** Cantidad one_make_dws.dim_oilstation
      customer_classify_fwy Tipo de cliente - Número de servidores one_make_dws.dim_oilstation
      clasificación_cliente_zt Tipo de cliente - Ferrocarril de China Cantidad one_make_dws.dim_oilstation
      clasificación_cliente_hzgs Tipo de Cliente - Número de Joint Ventures one_make_dws.dim_oilstation
      clasificación_cliente_jg Tipo de cliente - Cantidad de suministros militares one_make_dws.dim_oilstation
      clasificación_cliente_zhhangy Tipo de Cliente - Cantidad de CAO one_make_dws.dim_oilstation
      cadena dws_day Dimensión de fecha - por día one_make_dws.dim_fecha
      cadena dws_week Dimensión de fecha - por semana one_make_dws.dim_fecha
      cadena dws_month Dimensión de fecha - por mes one_make_dws.dim_fecha
      cadena tipo_aceite Tipo de gasolinera one_make_dws.dim_oilstation
      provincia_del_aceite provincia de la gasolinera one_make_dws.dim_oilstation
      cadena oil_city Ciudad a la que pertenece la gasolinera one_make_dws.dim_oilstation
      cadena oil_county zona de gasolineras one_make_dws.dim_oilstation
      clasificación_cliente tipo de cliente one_make_dws.dim_oilstation
      provincia_del_cliente provincia del cliente one_make_dws.dim_oilstation
      • Datos del tema del centro de llamadas
    • analizar

      • índice

        • El número de órdenes de trabajo de autoprocesamiento y el número de órdenes de trabajo despachadas
        • Número total de órdenes de trabajo, valor máximo, valor mínimo, valor medio
        • Número total de instalaciones, número total de reparaciones, número total de inspecciones, número total de renovaciones, número total de proyectos terminados
        • El número de Sinopec, el número de distribuidores, el número de otras ventas directas, el número de PetroChina, el número de otros contactos, el número de Sinochem Group y el número de CNOOC
        • Número de proveedores, número de fabricación integral, número de ingenieros de servicio, número de China Railway, número de empresas conjuntas, número de suministros militares y número de China Aviation Oil
      • dimensión

        • Dimensiones de la fecha: día, semana, mes
        • Dimensiones de la gasolinera: tipo, provincia, ciudad, región
        • Dimensión del cliente: tipo, provincia
      • ficha de datos

        • hoja de hechos

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

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

Supongo que te gusta

Origin blog.csdn.net/xianyu120/article/details/132062659
Recomendado
Clasificación