助力工业物联网,工业大数据之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;
-
-
维度表
-
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;
-
实现分析
-- 工单事实表 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上市,股票代码为࿰…...
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࿱…...
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…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
