当前位置: 首页 > news >正文

助力工业物联网,工业大数据之ST层的设计【二十五】

文章目录

    • 04:ST层的设计
    • 05:服务域:工单主题分析
    • 06:服务域:工单主题实现

04:ST层的设计

  • 目标掌握ST层的设计

  • 路径

    • step1:功能
    • step2:来源
    • step3:需求
  • 实施

    • 功能:数据应用层,用于支撑对外所有主题的报表应用数据的结果

      • 对外提供整个公司所有运营的报表
    • 来源:对DWB层的主题事实数据关联DWS层的维度表进行最终聚合

      • DWS:维度表:时间、地区、油站、组织机构

        维度id	维度值
        
      • DWB:工单、呼叫中心、费用

        维度id	指标
        
    • 需求:按照一站制造的业务主题的划分需求,构建每个主题的ST层的数据

      维度id	维度值		聚合指标
      
  • 小结

    • 掌握ST层的设计

05:服务域:工单主题分析

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

  • 路径

    • step1:需求
    • step2:分析
  • 实施

    • 需求:统计不同维度下的工单主题指标的结果

      字段名称字段说明来源
      owner_process派工方式-自己处理数量one_make_dwb.fact_call_service
      tran_process派工方式-转派工数量one_make_dwb.fact_call_service
      wokerorder_num工单总数one_make_dwb.fact_worker_order
      wokerorder_num_max工单总数最大值one_make_dwb.fact_worker_order
      wokerorder_num_min工单总数最小值one_make_dwb.fact_worker_order
      wokerorder_num_avg工单总数平均值one_make_dwb.fact_worker_order
      install_sumnum派工类型-安装总数one_make_dwb.fact_worker_order
      repair_sumnum派工类型-维修总数one_make_dwb.fact_worker_order
      remould_sumnum派工类型-巡检总数one_make_dwb.fact_worker_order
      inspection_sumnum派工类型-改造总数one_make_dwb.fact_worker_order
      alread_complete_sumnum完工总数one_make_dwb.fact_worker_order
      customer_classify_zsh客户类型-中石化数量one_make_dws.dim_oilstation
      customer_classify_jxs客户类型-经销商数量one_make_dws.dim_oilstation
      customer_classify_qtzx客户类型-其他直销数量one_make_dws.dim_oilstation
      customer_classify_zsy客户类型-中石油数量one_make_dws.dim_oilstation
      customer_classify_qtwlh客户类型-其他往来户数量one_make_dws.dim_oilstation
      customer_classify_zhjt客户类型-中化集团数量one_make_dws.dim_oilstation
      customer_classify_zhy客户类型-中海油数量one_make_dws.dim_oilstation
      customer_classify_gys客户类型-供应商数量one_make_dws.dim_oilstation
      customer_classify_onemake客户类型-一站制造**数量one_make_dws.dim_oilstation
      customer_classify_fwy客户类型-服务员数量one_make_dws.dim_oilstation
      customer_classify_zt客户类型-中铁数量one_make_dws.dim_oilstation
      customer_classify_hzgs客户类型-合资公司数量one_make_dws.dim_oilstation
      customer_classify_jg客户类型-军供数量one_make_dws.dim_oilstation
      customer_classify_zhhangy客户类型-中航油数量one_make_dws.dim_oilstation
      dws_day string日期维度-按天one_make_dws.dim_date
      dws_week string日期维度-按周one_make_dws.dim_date
      dws_month string日期维度-按月one_make_dws.dim_date
      oil_type string油站类型one_make_dws.dim_oilstation
      oil_province油站所属省one_make_dws.dim_oilstation
      oil_city string油站所属市one_make_dws.dim_oilstation
      oil_county string油站所属区one_make_dws.dim_oilstation
      customer_classify客户类型one_make_dws.dim_oilstation
      customer_province客户所属省one_make_dws.dim_oilstation
      • 呼叫中心主题事实
    • 分析

      • 指标

        • 工单自处理个数、工单转派工个数
        • 工单总数、最大值、最小值、平均值
        • 安装总数、维修总数、巡检总数、改造总数、完工总数
        • 中石化数量、经销商数量、其他直销数量、中石油数量、其他往来户数量、中化集团数量、中海油数量
        • 供应商数量、一站制造数量、服务工程师数量、中铁数量、合资公司数量、军供数量、中航油数量
      • 维度

        • 日期维度:天、周、月
        • 油站维度:类型、省份、城市、地区
        • 客户维度:类型、省份
      • 数据表

        • 事实表

          • fact_worker_order:工单事实表

            selectwo_num, --工单数量callaccept_id,--来电受理单idoil_station_id, --油站iddt --日期
            from fact_worker_order;
            
          • fact_call_service:呼叫中心事实表

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

          image-20211013101145353

        • 维度表

          • dim_oilstation:油站维度表

            selectid,--油站idcompany_name,--公司名称province_name,--省份名称city_name,--城市名称county_name,--区域名称customer_classify_name,--客户名称customer_province_name--客户省份
            from dim_oilstation;
            
          • dim_date:时间维度表

            selectdate_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')
      selectsum(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
      ;
      
  • 小结

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

相关文章:

助力工业物联网,工业大数据之ST层的设计【二十五】

文章目录 04:ST层的设计05:服务域:工单主题分析06:服务域:工单主题实现 04:ST层的设计 目标:掌握ST层的设计 路径 step1:功能step2:来源step3:需求 实施 功…...

MySQL实践——参数SQL_SLAVE_SKIP_COUNTER的奥秘

每次数据库复制冲突之后,经常使用的一个命令如下。 SET GLOBAL SQL_SLAVE_SKIP_COUNTER 1;一般会认为,现在出现冲突错误,那就将上面参数值设置为1,跳过出错的这个event就可以解决了。重新启动复制,发现问题果然解决&…...

小程序面试题

文章目录 简单谈谈微信小程序小程序的原生组件有哪些小程序的安卓版和ios版是怎么开发出来uni-app弹窗被覆盖怎么解决小程序生命周期小程序路由跳转小程序的兼容问题有哪些小程序框架都掌握哪一些,uniapp都会哪一些,平时开发遇到的困难上传图片uni-app h5 端的ios图片不能加载…...

微信小程序接入腾讯云天御验证码

腾讯云新一代行为验证码(Captcha),基于十道安全防护策略,为网页、APP、小程序开发者打造立体、全面的人机验证。在保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。 …...

Docker build 命令详解

build 命令用于使用 Dockerfile 创建镜像。 语法: $ docker build [OPTIONS] PATH | URL | -OPTIONS 说明 # 可通过帮助命令查看 $ docker build --help--build-arg[]: 设置镜像创建时的变量--cpu-shares: 设置 cpu 使用权重--cpu-period: 限制 CPU、CFS 周期--cpu…...

基于Translators的多语言翻译解决方案

当Translators库,一个用Python为个人和学生提供免费、多样、愉快翻译的库。 文章目录 Translators支持的翻译服务安装与入门参数和功能支持的语言调试和运行环境API服务Translators Translators库是一个强大的Python库,旨在为个人和学生提供免费、多样、愉快的翻译体验。它支…...

Unity 性能优化五:渲染模块压力

CPU压力 Batching 在GPU渲染前,CPU会把数据按batch发送给GPU,每发送一次,都是一个drawcall,GPU在渲染每个batch的时候,会切换渲染状态,这里的渲染状态指的是:影响对象在屏幕上的外观的渲染属性…...

Redis数据库 | 事务、持久化

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Redis事务操作 Redis事务是一组命令的集合,这些命令会作为一个整体被执行,要么全部执行成功,要么全部执行失败;Redis事…...

浅析大数据时代下的视频技术发展趋势以及AI加持下视频场景应用

视频技术的发展可以追溯到19世纪初期的早期实验。到20世纪初期,电视技术的发明和普及促进了视频技术的进一步发展。 1)数字化:数字化技术的发明和发展使得视频技术更加先进。数字电视信号具有更高的清晰度和更大的带宽,可以更快地…...

TensorRT学习笔记--基于YoloV8检测图片和视频

1--完整项目 完整项目地址:https://github.com/liujf69/TensorRT-Demo git clone https://github.com/liujf69/TensorRT-Demo.gitcd TRT_YoloV8 2--模型转换 cd yolov8python gen_wts.py 3--编译项目 mkdir buildcd build cmake .. # 需要更改 CMakeLists.txt…...

【C++】开源:matplotlib-cpp静态图表库配置与使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍matplotlib-cpp图表库配置与使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下&…...

香港IT软件开发服务公司Alpha Technology 申请纳斯达克IPO上市

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于中国香港的IT软件开发服务公司Alpha Technology 近期已向美国证券交易委员会(SEC)提交招股书,申请在纳斯达克IPO上市,股票代码为&#xff0…...

JavaScript:数组深拷贝

文章目录 1 数组深拷贝的意义2 数组深拷贝的常用方式2.1 使用 JSON 序列化和反序列化2.2 使用递归方法2.3 使用第三方库 1 数组深拷贝的意义 JavaScript中的数组深拷贝,指的是创建一个完全独立于原始数组的新数组,所有新数组的元素都是原始数组的副本。…...

干翻Dubbo系列第七篇:@EnableDubbo、@DubboService、@DubboReference注解的作用

文章目录 文章说明 一:EnableDubbo注解的作用 1:注解使用地点 2:注解作用 3:路径要求 4:指定路径 5:另外一种指定路径 二:DubboService注解的作用 1:注解作用 2&#xff1…...

clickhouse断电重启故障解决方案

业务场景 公司的一个日志系统用到了clickhouse。一线运维反映说有个生产环境因为异常断电造成服务器重启。在执行日志系统的启动脚本时,一直报clickhouse启动不起来,日志系统无法使用。 问题排查 通过阅读启动脚本代码,以及启动日志系统&a…...

Spring学习笔记之Bean的实例化方式

文章目录 通过构造方法实例化通过简单工厂模式实例化通过factory-bean实例化BeanFactory和FactoryBean的区别BeanFactoryFactoryBean 注入自定义Date Spring为Bean提供了多种实例化方式,通常包括4种方式。(也就是说在Spring中为Bean对象的创建准备了很多…...

JVM-类加载器

1.前置知识 1.1CPU与内存交互图: 2.类加载器ClassLoader 在装载(Load)阶段,其中第(1)步:通过类的全限定名获取其定义的二进制字节流,需要借助类装 载器完成,顾名思义,就是用来装载Class文件的。 2.1什么是类加载器&a…...

ChatGPT在法律行业的市场潜力

​ChatGPT现在已经成为我们的文字生成辅助工具、搜索引擎助手,许多体验过它的朋友会发现对它越来越依赖,并将其逐渐融入到自己的日常工作、生活。但有一点值得注意:这种人工智能除了技术可行、经济价值可行还要与相关规范即人类普遍的价值观念…...

Python编程从入门到实践练习第三章:列表简介

目录 一、字符串1.1 在字符串中使用变量 二、列表2.1 遍历列表练习题代码 2.2 列表元素的插入和删除涉及方法练习题代码 2.3 组织列表涉及方法练习题代码 2.4 索引 参考书:Python从入门到实践(第二版) 一、字符串 1.1 在字符串中使用变量 f…...

【Spring Boot】请求参数传json数组,后端采用(pojo)新增案例(103)

请求参数传json数组,后端采用(pojo)接收的前提条件: 1.pom.xml文件加入坐标依赖:jackson-databind 2.Spring Boot 的启动类加注解:EnableWebMvc 3.Spring Boot 的Controller接受参数采用:Reque…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

表单设计器拖拽对象时添加属性

背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...