助力工业物联网,工业大数据之工单事实指标需求分析【二十】

简介: 助力工业物联网,工业大数据之工单事实指标需求分析【二十】

1:工单事实指标需求分析

  • 目标:掌握DWB层工单事实指标表的需求分析
  • 路径
  • step1:目标需求
  • step2:数据来源
  • 实施
  • 目标需求:基于工单信息统计等待分配工单数量、完成工单数量、处理工单数量、响应时长、服务时长等指标
字段名 说明 数据来源
wo_id 工单id one_make_dwd.ciss_service_workorder
callaccept_id 来电受理单id one_make_dwd.ciss_service_workorder
oil_station_id 油站id one_make_dwd.ciss_service_workorder
userids 服务该工单用户id(注意:可能会有多个,以逗号分隔) one_make_dwd.ciss_service_workorder
wo_num 工单单据数量 one_make_dwd.ciss_service_workorder
back_num 退回工单数量(如果工单没有被退回,数量是0) one_make_dwd.ciss_service_workorder、ciss_service_workorder_back
abolished_num 已作废工单数量 one_make_dwd.ciss_service_workorder
wait_dispatch_num 待派工数量 one_make_dwd.ciss_service_workorder、eos_dict_type、eos_dict_entry派工单状态:待派工(status=4)
alread_complete_num 已完工工单数量(已完工、已回访) 派工单状态:已完工、已回访(status=5 || 6)
processing_num 正在处理工单数量(待离站、待完工) 派工单状态:待离站、待完工(status=3 || 4)
people_num 工单人数数量(一个工单由多人完成) one_make_dwd.ciss_service_workorder、ciss_service_workorder_user默认为1数据预处理;工单用户id是否为空;工单用户id是否为空
service_total_duration 服务总时长(按小时)->从出发到完工时间(leave_time - start_time) one_make_dwd.ciss_service_workorder
repair_service_duration 报修响应时长(按小时)->呼叫中心受理到出发时间(start_time-submit_time) one_make_dwd.ciss_service_workorder
customer_repair_num 客户报修工单数量 one_make_dwd.ciss_service_workorder;is_customer_repairs字段
charg_num 收费工单数量 one_make_dwd.ciss_service_workorder;is_charg字段
repair_device_num 维修设备数量 ciss_service_order、ciss_service_order_device;状态:维修(type=2)
install_device_num 安装设备数据量 ciss_service_order、ciss_service_order_device;状态:安装(type=1)
install_num 安装单数量(以下四个单据的数量有可能会有重叠,例如:一个工单有可能有巡检、也有可能有维修) one_make_dwd.ciss_service_install
repair_num 维修单数量 ciss4.ciss_service_repair
remould_num 巡检单数量 ciss4.ciss_service_remould
inspection_num 改造单数量 ciss4.ciss_service_inspection
workorder_trvl_exp 工单差旅费(通过工单id与ciss4.ciss_service_trvl_exp_dtl关联,取submoney5即可) ciss4.ciss_service_trvl_exp_dtl

  • 数据来源
  • ciss_service_workorder:工单详情事实表
select
    id,--工单id
    callaccept_id,--来电受理id
    oil_station_id, --油站id
    service_userid,--工程师id
    status,--工单状态
    submit_time,--提交时间
    start_time,--开始时间
    leave_time,--离开时间
    is_customer_repairs,--是否为报修工单
    is_charg --是否为收费工单
from ciss_service_workorder;
  • ciss_service_workorder_back:回退工单信息表
select 
    id,              --回退id
    workorder_id     --工单id
from ciss_service_workorder_back;
  • ciss_service_workorder_user:工程师信息表
select
    workorder_id,  --工单id
    userid,        --工程师id
    username       --工程师姓名
from ciss_service_workorder_user; 
  • ciss_service_trvl_exp_dtl:差旅费用信息表
select
    work_order_id, --工单id
    submoney5 --应收会计扣款金额
from ciss_service_trvl_exp_dtl;
  • ciss_service_order:服务单信息表
select
  id,            --服务单id
  workorder_id,  --工单id
  type           --工单类型,1-安装,2-维修,3-巡检
from ciss_service_order;
  • ciss_service_order_device:服务单设备信息表
select
    id,               --设备id
    service_order_id  --服务单id
from ciss_service_order_device;
  • 工单类型合并表
  • ciss_service_install:设备安装信息表
  • 服务单id、安装工单id
  • ciss_service_repair:设备维修信息表
  • 服务单id、维修工单id
  • ciss_service_remould:设备改造信息表
- 服务单id、改造工单id
  • ciss_service_inspection:设备巡检信息表
  • 服务单id、巡检工单id
select
    so.id,                     --服务单id
    so.workorder_id,           --工单id
    install.id installid,      --安装单id
    repair.id repairid,        --维修单id
    remould.id remouldid,      --改造单id
    inspection.id inspectionid --巡检单id
 --服务单信息表
from one_make_dwd.ciss_service_order so
left join one_make_dwd.ciss_service_install install on so.id = install.service_id
left join one_make_dwd.ciss_service_repair repair on so.id = repair.service_id
  left join one_make_dwd.ciss_service_remould remould on so.id = remould.service_id
  left join one_make_dwd.ciss_service_inspection inspection on so.id = inspection.service_id
  where so.dt = '20210101';
  • 小结
  • 掌握DWB层呼叫中心事实指标表的需求分析

2:工单事实指标构建

  • 目标:实现DWB层工单事实指标表的构建
  • 实施
  • 建表
drop table if exists one_make_dwb.fact_worker_order;
create table if not exists one_make_dwb.fact_worker_order(
    wo_id string comment '工单id'
    , callaccept_id string comment '来电受理单id'
    , oil_station_id string comment '油站id'
    , userids string comment '服务该工单用户id(注意:可能会有多个,以逗号分隔)'
    , wo_num bigint comment '工单单据数量'
    , back_num bigint comment '退回工单数量,默认为0'
    , abolished_num bigint comment '已作废工单数量'
    , wait_dispatch_num bigint comment '待派工数量'
    , wait_departure_num bigint comment '待出发数量'
    , alread_complete_num bigint comment '已完工工单数量(已完工、已回访)'
    , processing_num bigint comment '正在处理工单数量(待离站、待完工)'
    , people_num int comment '工单人数数量(一个工单由多人完成)'
    , service_total_duration int comment '服务总时长(按小时),(leave_time - start_time)'
    , repair_service_duration int comment '报修响应时长(按小时),(start_time-submit_time)'
    , customer_repair_num bigint comment '客户报修工单数量'
    , charg_num bigint comment '收费工单数量'
    , repair_device_num bigint comment '维修设备数量'
    , install_device_num bigint comment '安装设备数据量'
    , install_num bigint comment '安装单数量'
    , repair_num bigint comment '维修单数量'
    , remould_num bigint comment '改造单数量'
    , inspection_num bigint comment '巡检单数量'
    , workorder_trvl_exp decimal(20,1) comment '工单差旅费'
)
partitioned by (dt string)
stored as orc
location '/data/dw/dwb/one_make/fact_worker_order'
;
  • 抽取
insert overwrite table one_make_dwb.fact_worker_order partition(dt = '20210101')
select
    --工单id
    wo.id wo_id
  --来电受理单id
    , max(callaccept_id) callaccept_id
  --油站id
    , max(oil_station_id) oil_station_id
  --工程师id
    , max(case when wo.service_userids is not null then concat_ws(',', wo.service_userid, wo.service_userids) else wo.service_userid end) userids
    --工单单据数量:安装单、维修单……
  , count(wo.id) wo_num
  --退回工单数量
    , count(wob.id) back_num
  --已作废工单数量
    , sum(case when status = '-1' then 1 else 0 end) abolished_num
  --待派发工单数量
    , sum(case when status = '4' then 1 else 0 end) wait_dispatch_num
  --待出发工单数量
    , sum(case when status = '2' then 1 else 0 end) wait_departure_num
    --已完工工单数量
  , sum(case when status = '5' then 1 when status = '6' then 1 else 0 end) alread_complete_num
    --处理中工单数量
  , sum(case when status = '3' then 1 when status = '4' then 1 else 0 end) processing_num
    --工单人数
  , case when count(usr.id) = 0 then 1 else count(usr.id) end people_num
    --服务总时长
  , max((wo.leave_time - wo.start_time) / 3600000) service_total_duration
    --报修响应时长
  , max((wo.start_time - wo.submit_time) / 3600000) repair_service_duration
    --客户报修工单数量
  , sum(case when wo.is_customer_repairs = '2' then 1 else 0 end) customer_repairs
    --收费工单数量
  , sum(case when wo.is_charg = '1' then 1 else 0 end) charg_num
    --维修设备数量
  , max(case when sod.repair_device_num = 0 then 1 when sod.repair_device_num is null then 0 else sod.repair_device_num end) repair_device_num
    --安装设备数量
  , max(case when sod2.install_device_num = 0 then 1 when sod2.install_device_num is null then 0 else sod2.install_device_num end) install_device_num
    --安装单数量
  , sum(case when sertype.installid is not null then 1 else 0 end) install_num
    --维修单数量
  , sum(case when sertype.repairid is not null then 1 else 0 end) repair_num
    --改造单数量
  , sum(case when sertype.remouldid is not null then 1 else 0 end) remould_num
    --巡检单数量
  , sum(case when sertype.inspectionid is not null then 1 else 0 end) inspection_num
    --工单差旅费
  , max(case when ed.submoney5 is null then 0.0 else ed.submoney5 end) workorder_trvl_exp
-- 工单信息表
from one_make_dwd.ciss_service_workorder wo
  --关联回退工单:回退工单个数
    left join one_make_dwd.ciss_service_workorder_back wob on wo.id = wob.workorder_id
  --关联工程师信息表:工程师人数
    left join one_make_dwd.ciss_service_workorder_user usr on wo.id = usr.workorder_id
  --关联差旅费用信息表:工单差旅费用
    left join one_make_dwd.ciss_service_trvl_exp_dtl ed on wo.id = ed.work_order_id
  --关联维修设备个数信息
    left join (
      --统计每个工单的维修设备个数
      select
          so.workorder_id, count(sod.id) repair_device_num
      --服务单表关联设备表:每个工单对应的设备id
      from one_make_dwd.ciss_service_order so
      left join one_make_dwd.ciss_service_order_device sod
      on so.id = sod.service_order_id
      where so.type = '2' and so.dt='20210101'
      group by so.workorder_id
    ) sod on wo.id = sod.workorder_id
  --关联安装设备个数信息
    left join (
        --统计每个工单的安装设备个数
          select
          so.workorder_id, count(sod.id) install_device_num
      from one_make_dwd.ciss_service_order so
      left join one_make_dwd.ciss_service_order_device sod
      on so.id = sod.service_order_id
          --过滤服务单的类型为安装类型的服务单
      where so.type = '1' and so.dt='20210101'
      group by so.workorder_id
  ) sod2 on wo.id = sod2.workorder_id
  --工单类型合并表:安装、维修、改造、巡检单id
    left join (
          select
          so.id, so.workorder_id, install.id installid, repair.id repairid, remould.id remouldid, inspection.id inspectionid
      from one_make_dwd.ciss_service_order so
          left join one_make_dwd.ciss_service_install install on so.id = install.service_id
          left join one_make_dwd.ciss_service_repair repair on so.id = repair.service_id
          left join one_make_dwd.ciss_service_remould remould on so.id = remould.service_id
          left join one_make_dwd.ciss_service_inspection inspection on so.id = inspection.service_id
          where so.dt = '20210101'
    ) sertype on wo.id = sertype.workorder_id
where wo.dt='20210101'
group by wo.id
;
  • 小结
  • 实现DWB层呼叫中心事实指标表的构建


目录
相关文章
|
15天前
|
数据采集 运维 算法
大数据项目管理:从需求分析到成果交付的全流程指南
【4月更文挑战第9天】本文介绍了大数据项目从需求分析到成果交付的全过程,包括需求收集与梳理、可行性分析、项目规划、数据准备与处理、系统开发与集成,以及成果交付与运维。文中通过实例展示了如何进行数据源接入、数据仓库建设、系统设计、算法开发,同时强调了需求理解、知识转移、系统运维的重要性。此外,还提供了Python和SQL代码片段,以说明具体技术实现。在大数据项目管理中,需结合业务和技术,灵活运用这些方法,确保项目的成功执行和价值实现。
29 1
|
2月前
|
监控 物联网 大数据
智慧工地管理平台系统源码基于物联网、云计算、大数据等技术
智慧工地平台APP通过对施工过程人机料法环的全面感知、互联互通、智能协同,提高施工现场的生产效率、管理水平和决策能力,实现施工管理的数字化、智能化、精益化。
56 0
|
4月前
|
NoSQL 物联网 大数据
【补充】助力工业物联网,工业大数据之AirFlow安装
【补充】助力工业物联网,工业大数据之AirFlow安装
59 1
|
4月前
|
Prometheus 数据可视化 Cloud Native
助力工业物联网,工业大数据之服务域:可视化工具Grafana介绍【三十八】
助力工业物联网,工业大数据之服务域:可视化工具Grafana介绍【三十八】
104 1
|
4月前
|
存储 SQL Oracle
助力工业物联网,工业大数据之服务域:项目总结【三十九】
助力工业物联网,工业大数据之服务域:项目总结【三十九】
43 1
|
6天前
|
存储 供应链 物联网
未来技术纵横谈:区块链、物联网与虚拟现实的融合革新
【4月更文挑战第21天】 随着科技不断进步,新兴技术正在重塑我们的世界。本文将深入探讨三种引人注目的技术——区块链、物联网(IoT)和虚拟现实(VR)——它们各自的发展趋势及其在不同领域的应用前景。区块链技术以其不可篡改的数据记录特性,在金融安全、供应链管理等领域展现出巨大潜力;物联网通过智能设备互联,推动智能家居、智慧城市的发展;而虚拟现实则以其沉浸式体验,改变教育、娱乐等多个行业的面貌。这些技术的交叉融合预示着一个更加智能、互联和虚拟的未来。
18 5
|
5天前
|
供应链 安全 物联网
未来技术纵横谈:区块链、物联网与虚拟现实的融合革新
【4月更文挑战第22天】 在数字化浪潮中,新兴技术的蓬勃发展正推动着传统行业的变革与升级。区块链技术以其不可篡改和去中心化的特性,为数据安全和信息透明提供了新的解决方案;物联网(IoT)通过智能设备的互联互通,实现了环境与行为的智能化管理;而虚拟现实(VR)技术则拓展了人们的感官体验,创造了沉浸式互动的新空间。本文聚焦于这些技术的发展趋势,探讨其在多个应用场景中的结合与创新,旨在描绘一幅技术交织下的未来蓝图。
15 3
|
1天前
|
安全 物联网 区块链
未来技术纵横谈:区块链、物联网与虚拟现实的融合与创新
【4月更文挑战第26天】 随着科技的不断进步,新兴技术如区块链技术、物联网(IoT)、以及虚拟现实(VR)正在逐渐改变我们的生活和工作方式。本文将探讨这些技术的独立发展路径,并着重分析它们相互结合时可能产生的创新应用。通过深度剖析每项技术的核心优势和潜在挑战,文章旨在描绘出一个多元化的技术趋势蓝图,并对如何利用这些技术推动社会和经济的可持续发展提供前瞻性的思考。
|
2天前
|
安全 物联网 区块链
未来技术的融合潮流:区块链、物联网与虚拟现实的交汇点
【4月更文挑战第25天】 随着科技的不断进步,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)已逐渐从概念验证走向实际应用。这些技术不仅单独发展迅猛,而且开始相互融合,创造出前所未有的应用场景和商业模式。本文将深入探讨这些技术的发展趋势,分析它们如何协同工作,以及在多个行业中的潜在应用。特别地,我们将聚焦于金融、医疗和娱乐等行业,揭示这些技术如何推动创新并带来颠覆性的变化。
|
2天前
|
供应链 物联网 区块链
未来交织:区块链技术、物联网和虚拟现实的融合革新
【4月更文挑战第25天】 随着科技的迅猛发展,新兴技术如区块链、物联网(IoT)、以及虚拟现实(VR)正在重塑我们的世界。这些技术不仅在独立领域中取得显著进展,而且开始相互交融,催生出一系列创新应用。本文将探讨这些技术的发展趋势,并深入剖析它们在不同行业中的应用场景,包括供应链管理、智能家居、远程工作、以及沉浸式娱乐等领域。

热门文章

最新文章