Helping the Industrial Internet of Things, la division des indicateurs de sujet factuels du big data industriel [Dix-huit]

01 : Division des indicateurs de sujet factuels

  • Objectif : Maîtriser le découpage des thématiques métiers et la conception des indicateurs thématiques en guichet unique de fabrication

  • mettre en œuvre

    • processus de base
      • Station-service : besoins d'installation, d'entretien, d'inspection et de rénovation
      • Appel : Appelez le centre d'appels pour passer un bon de travail
        • Le centre d'appels peut le résoudre directement : aucun nouveau bon de travail ne sera généré : consulter
        • Le centre d'appels ne peut pas le résoudre directement : créez un ticket
      • Points de vente : le centre d'appels attribue des ordres de travail aux points de vente
      • Ordre de travail : l'ingénieur affecté confirme l'ordre de travail
      • Station-service : mettre en œuvre des exigences spécifiques pour les bons de travail
      • Matériaux d'entreposage: postulez pour les pièces de rechange de planification d'entrepôt, il y a des coûts de pièces de rechange
      • Frais de déplacement : frais de transport, frais d'hébergement, frais de ravitaillement, frais de subvention
      • Visite de retour : le centre d'appels effectuera une visite de retour par téléphone pour la commande terminée
    • Indicateurs de faits du centre d'appels: Le nombre d'appels acceptés, le nombre de bons de travail expédiés
    • Indicateurs de faits sur les stations-service: nombre de stations-service, nombre de stations-service hors service, nombre d'équipements de station-service
    • Indicateurs de faits sur les tickets: Nombre unique d'ouvriers d'installation, nombre unique d'ouvriers de maintenance
    • Indicateurs de faits d'installation : nombre d'installations, coût d'installation
    • Indicateurs de faits de maintenance : nombre de dimensions, coût de maintenance
    • Index des faits sur les visites de retour des clients: Nombre de satisfaits, insatisfaits, satisfaits de l'attitude, satisfaits de la vitesse de réponse, satisfaits de la technologie
    • indicateur de coût: Frais de remboursement, frais de taux différentiel, frais de subvention
    • Informations sur le voyage : Carburant, hébergement, transport
    • Indicateur réel du matériel de sortie : le nombre de pièces de rechange
    • ……
  • résumé

    • Maîtriser la division des sujets d'affaires et la conception d'indicateurs de sujet dans la fabrication à guichet unique

02 : Analyse de la demande des indicateurs de faits du centre d'appels

  • Objectif : Maîtriser les exigences de la table d'index des faits du centre d'appels de la couche DWB

  • chemin

    • étape 1 : exigences cibles
    • étape 2 : source de données
  • mettre en œuvre

    • Exigences cibles : basées sur le temps de base, la méthode d'acceptation, le type d'appel et d'autres dimensions factuelles pour compter le nombre de bons de travail, le nombre d'appels, le nombre de visites de retour, le nombre de plaintes, etc.

      image-20211003132754810

    • Les sources de données

      • ciss_service_callaccept : tableau des détails des appels du centre de service client

        image-20211003132152326 image-20211003132225976
      • eos_dict_type : table de catégories d'état de dictionnaire, enregistre toutes les tables qui doivent être marquées avec des dictionnaires

        select * from eos_dict_type where dicttypename = '来电类型';
        select * from eos_dict_type where dicttypename = '来电受理单--处理方式';
        
      • eos_dict_entry : liste d'état du dictionnaire, enregistrant toutes les informations d'état ou de catégorie spécifiques

        select * from eos_dict_entry where dicttypeid = 'BUSS_CALL_TYPE';
        select * from eos_dict_entry where dicttypeid = 'BUSS_PROCESS_WAY';
        
      • ciss_service_workorder : liste des statuts des bons de travail

        select callaccept_id,status from ciss_service_workorder;
        -- 查看每个状态的含义
        select * from eos_dict_type where dicttypename = '派工单状态';
        select * from eos_dict_entry where dicttypeid = 'BUSS_WORKORDER_STATUS';
        
    • résumé

      • Saisir les exigences de la table d'index des faits du centre d'appels de la couche DWB

03 : Construction des indicateurs de faits du centre d'appels

  • Objectif : Réaliser la construction de la table d'index des faits du centre d'appels de la couche DWB

  • mettre en œuvre

    • Créer une base de données

      create database if not exists one_make_dwb;
      
    • construire un tableau

      -- 创建呼叫中心 | 来电受理事实表
      -- 如果interval进不去,用`interval`圈起来,指明是字段
      drop table if exists one_make_dwb.fact_call_service;
      create table if not exists one_make_dwb.fact_call_service(
          id string comment '受理id(唯一标识)' 
          , code string comment '受理单唯一编码'
          , call_date string comment '来电日期(日期id)' 
          , call_hour int comment '来电时间(小时)(事实维度)'
          , call_type_id string comment '来电类型(事实维度)'
          , call_type_name string comment '来电类型名称(事实维度)'
          , process_way_id string comment '受理方式(事实维度)' 
          , process_way_name string comment '受理方式(事实维度)' 
          , oil_station_id string comment '油站id' 
          , userid string comment '受理人员id'
          , cnt int comment '单据数量(指标列)'
          , dispatch_cnt int comment '派工数量'
          , cancellation_cnt int comment '派工单作废数量' 
          , chargeback_cnt int comment '派工单退单数量'
          , interval int comment '受理时长(单位:秒)' 
          , tel_spt_cnt int comment '电话支持数量'
          , on_site_spt_cnt int comment '现场安装、维修、改造、巡检数量' 
          , custm_visit_cnt int comment '回访单据数量' 
         , complain_cnt int comment '投诉单据数量' 
         , other_cnt int
      comment '其他业务单据数量')
      partitioned by (dt string)
      stored as orc
      location '/data/dw/dwb/one_make/fact_call_service';
      
      
    • Construire une table de dictionnaire de données [Il est gênant d'associer deux tables à chaque fois et de les fusionner en une seule table]

      create table if not exists one_make_dwb.tmp_dict
      stored as orc
      as
      select
          dict_t.dicttypename             -- 类型名称
          , dict_e.dictid                 -- 字典编号
          , dict_e.dictname               -- 字典名称
      from  one_make_dwd.eos_dict_type dict_t
      left join  one_make_dwd.eos_dict_entry dict_e
         on dict_t.dt = '20210101' and dict_e.dt = '20210101' and dict_t.dicttypeid = dict_e.dicttypeid
      order by  dict_t.dicttypename, dict_e.dictid;
      
      select * from one_make_dwb.tmp_dict where dicttypename = '来电类型';
      select * from one_make_dwb.tmp_dict where dicttypename = '来电受理单--处理方式';
      
    • Extraction (cette méthode d'écriture a des bugs dans le traitement du temps, faites attention à la fonction de plancher)

      insert overwrite table one_make_dwb.fact_call_service partition (dt = '20210101')
      select
          call.id     --来电受理唯一id
          , call.code -- 受理单唯一编码
          , date_format(timestamp(call.call_time), 'yyyymmdd') as call_date -- 来电日期(日期id)
          , hour(timestamp(call.call_time))  -- 来电时间(小时)(事实维度)
          , call.call_type -- 来电类型(事实维度)
          , call_dict.dictname -- 来电类型名称(事实维度)
          , call.process_way -- 受理方式(事实维度)
          , process_dict.dictname -- 受理方式(事实维度)
          , call.call_oilstation_id -- 油站id
          , call.accept_userid -- 受理人员id
          , 1 -- 单据数量(指标列)
          , case when call.process_way = 5  then 1 else 0 end -- 派工数量:0-自己处理,1-产生派工
          , case when workorder.status = -1 then 1 else 0 end -- 派工单作废数量
          , case when workorder.status = -2 then 1 else 0 end -- 派工单退单数量
      	, floor(to_unix_timestamp(timestamp(call.process_time),'yyyy-mm-dd hh:mm:ss') - to_unix_timestamp(timestamp(call.call_time), 'yyyy-mm-dd hh:mm:ss') / 1000.0) -- 受理时长(单位:秒)
          , case when call.call_type = 5 then 1 else 0 end -- 电话支持数量
          , case when call.call_type in (1, 2, 3, 4) then 1 else 0 end -- 现场安装、维修、改造、巡检数量
          , case when call.call_type = 7 then 1 else 0 end -- 回访单据数量
          , case when call.call_type = 8 then 1 else 0 end -- 投诉单据数量
          , case when call.call_type = 9 or call.call_type = 6 then 1 else 0 end -- 其他业务单据数量
      -- 来电详情表
      from one_make_dwd.ciss_service_callaccept call
      -- 字典信息表:得到来电类型名称
      left join one_make_dwb.tmp_dict call_dict on call.call_type = call_dict.dictid  and call_dict.dicttypename = '来电类型'
      -- 字典信息表:受理方式名称
      left join one_make_dwb.tmp_dict process_dict on call.process_way = process_dict.dictid and process_dict.dicttypename = '来电受理单--处理方式'
      -- 工单信息表:得到工单状态:-2:退单,-1:作废
      left join one_make_dwd.ciss_service_workorder workorder on workorder.dt = '20210101' and workorder.callaccept_id = call.id
      where call.dt = '20210101' and call.code != 'null' and call.call_time is not null;
      
  • Considérant qu'il n'y a aucun problème à écrire de cette façon

    insert overwrite table one_make_dwb.fact_call_service partition (dt='20210101')
    select
        call.id     --来电受理唯一id
        , call.code -- 受理单唯一编码
        , date_format(timestamp(call.call_time), 'yyyymmdd') as call_date -- 来电日期(日期id)
        , hour(timestamp(call.call_time))  -- 来电时间(小时)(事实维度)
        , call.call_type -- 来电类型(事实维度)
        , call_dict.dictname -- 来电类型名称(事实维度)
        , call.process_way -- 受理方式(事实维度)
        , process_dict.dictname -- 受理方式(事实维度)
        , call.call_oilstation_id -- 油站id
        , call.accept_userid -- 受理人员id
        , 1 -- 单据数量(指标列)
        , case when call.process_way = 5  then 1 else 0 end -- 派工数量:0-自己处理,1-产生派工(状态码调整为0和1)
        , case when workorder.status = -1 then 1 else 0 end -- 派工单作废数量,如果是-1说明工单作废,则计数为1,为后面聚合准备
        , case when workorder.status = -2 then 1 else 0 end -- 派工单退单数量,如果是-2说明工单退单,则计数为1,为后面聚合准备
    	, to_unix_timestamp(timestamp(call.process_time),'yyyy-mm-dd hh:mm:ss') - to_unix_timestamp(timestamp(call.call_time), 'yyyy-mm-dd hh:mm:ss')-- 受理时长(单位:秒)处理时间戳-受理时间戳
        , case when call.call_type = 5 then 1 else 0 end -- 电话支持数量,如果是5说明电话支持,则计数为1,为后面聚合准备
        , case when call.call_type in (1, 2, 3, 4) then 1 else 0 end -- 现场安装、维修、改造、巡检数量,如果是(1,2,3,4),则计数为1,为后面聚合准备
        , case when call.call_type = 7 then 1 else 0 end -- 回访单据数量,如果是7,则计数为1,为后面聚合准备
        , case when call.call_type = 8 then 1 else 0 end -- 投诉单据数量,如果是8,则计数为1,为后面聚合准备
        , case when call.call_type = 9 or call.call_type = 6 then 1 else 0 end -- 其他业务单据数量,如果是9或者6,则计数为1,为后面聚合准备
    -- 来电详情表
    from one_make_dwd.ciss_service_callaccept call
    -- 字典信息表:得到来电类型名称
    left join one_make_dwb.tmp_dict call_dict on call.call_type = call_dict.dictid  and call_dict.dicttypename = '来电类型'
    -- 字典信息表:受理方式名称
    left join one_make_dwb.tmp_dict process_dict on call.process_way = process_dict.dictid and process_dict.dicttypename = '来电受理单--处理方式'
    -- 工单信息表:得到工单状态:-2:退单,-1:作废
    left join one_make_dwd.ciss_service_workorder workorder on workorder.dt = '20210101' and workorder.callaccept_id = call.id
    where call.dt = '20210101' and call.code != 'null' and call.call_time is not null;
    
  • résumé

    • Réaliser la construction de la table d'index des faits du centre d'appels de la couche DWB

Je suppose que tu aimes

Origine blog.csdn.net/xianyu120/article/details/131959610
conseillé
Classement