助力工业物联网,工业大数据之费用事实指标分析及实现【二十四】

news2024/11/24 19:09:14

文章目录

    • 1:费用事实指标分析及实现
    • 2:差旅事实指标分析及实现
    • 3:网点物料事实指标分析及实现

1:费用事实指标分析及实现

  • 目标实现DWB层费用报销事实指标表的构建

  • 路径

    • step1:目标需求
    • step2:数据来源
    • step3:目标实现
  • 实施

    • 目标需求:基于费用报销数据统计费用报销金额等指标

      image-20211003182720330

    • 数据来源

      • ciss_service_expense_report:费用信息表

        select
            id,--报销单id
            create_user_id,--创建人id
            submoney5, --报销金额
            create_org_id --创建部门id
        from ciss_service_expense_report;
        
      • ciss_base_servicestation:服务网点信息表

        select
            id,--服务网点id
            org_id --部门id
        from ciss_base_servicestation;
        
      • ciss_service_exp_report_dtl:费用明细表

        select
            exp_report_id,--报销单id
            submoney5,--项目报销实际金额
            item_id --费用项目id
        from ciss_service_exp_report_dtl;
        
      • tmp_dict:数据字典表

        select
               dictid, --项目id
               dictname --项目名称
        from one_make_dwb.tmp_dict where dicttypename = '费用报销项目';
        
    • 目标实现

      • 建表

        drop table if exists one_make_dwb.fact_regular_exp;
        create table if not exists one_make_dwb.fact_regular_exp(
              exp_id string comment '费用报销id'
            , ss_id string comment '服务网点id'
            , srv_user_id string comment '服务人员id'
            , actual_exp_money decimal(20,1) comment '费用实际报销金额'
            , exp_item string comment '费用项目id'
            , exp_item_name string comment '费用项目名称'
            , exp_item_money decimal(20,1) comment '费用项目实际金额'
        )
        partitioned by (dt string)
        stored as orc
        location '/data/dw/dwb/one_make/fact_regular_exp';
        
      • 抽取

        insert overwrite table one_make_dwb.fact_regular_exp partition(dt = '20210101')
        select
            /*+repartitions(1) */
            exp.id as exp_id                           --费用报销id
            , ss.id as ss_id                           --服务网点id
            , exp.create_user_id as srv_user_id        --创建人id
            , exp.submoney5 as actual_exp_money        --实际报销金额
            , dict.dictid as exp_item                  --费用项目id
            , dict.dictname as exp_item_name           --费用项目名称
            , exp_dtl.submoney5 as exp_item_money      --费用项目金额
        from
        --费用信息表
        (
            select
        	    *
        	from one_make_dwd.ciss_service_expense_report
            where dt = '20210101' and status = 9 --只取制证会计已审状态
        ) exp
        --服务网点信息表
        left join one_make_dwd.ciss_base_servicestation ss
        on ss.dt = '20210101' and ss.org_id = exp.create_org_id
        --报销明细表
        left join one_make_dwd.ciss_service_exp_report_dtl exp_dtl
        on exp_dtl.dt = '20210101' and exp.id = exp_dtl.exp_report_id
        --数据字典表
        left join one_make_dwb.tmp_dict dict
        on dict.dicttypename = '费用报销项目' and dict.dictid = exp_dtl.item_id
        ;
        
  • 小结

    • 实现DWB层费用报销事实指标表的构建

2:差旅事实指标分析及实现

  • 目标实现DWB层差旅报销事实指标表的构建

  • 路径

    • step1:目标需求
    • step2:数据来源
    • step3:目标实现
  • 实施

    • 目标需求:基于差率报销信息统计交通费用、住宿费用、油费金额等报销费用指标

      image-20211003210750811

    • 数据来源

      • ciss_service_trvl_exp_sum:差旅报销汇总信息表

        select
            id,--汇总报销单id
            user_id,--报销人id【工程师id】
            status,--汇总单状态:15表示审核通过
            submoney5 --应收报销总金额
        from ciss_service_trvl_exp_sum;
        
      • ciss_s_exp_report_wo_payment:汇总报销单与工单费用单对照表

        select
            exp_report_id,--汇总报销单id
            workorder_travel_exp_id --工单费用单id
        from ciss_s_exp_report_wo_payment;
        
      • ciss_service_travel_expense:差旅报销单信息表

        select
            id,--差旅报销单id
            work_order_id --工单id
        from ciss_service_travel_expense;
        
      • ciss_service_workorder:工单信息表

        select
            id,--工单id
            service_station_id --服务网点id
        from ciss_service_workorder;
        
      • ciss_service_trvl_exp_dtl:差旅费用明细表

        select
            travel_expense_id,--费用单id
            item,--费用项目名称
            submoney5 --费用金额
        from ciss_service_trvl_exp_dtl;
        
    • 目标实现

      • 建表

        drop table if exists one_make_dwb.fact_trvl_exp;
        create table if not exists one_make_dwb.fact_trvl_exp(
              trvl_exp_id string comment '差旅报销单id'
            , ss_id string comment '服务网点id'
            , srv_user_id string comment '服务人员id'
            , biz_trip_money decimal(20,1) comment '外出差旅费用金额总计'
            , in_city_traffic_money decimal(20,1) comment '市内交通费用金额总计'
            , hotel_money decimal(20,1) comment '住宿费费用金额总计'
            , fars_money decimal(20,1) comment '车船费用金额总计'
            , subsidy_money decimal(20,1) comment '补助费用金额总计'
            , road_toll_money decimal(20,1) comment '过桥过路费用金额总计'
            , oil_money decimal(20,1) comment '油费金额总计'
            , secondary_money decimal(20,1) comment '二单补助费用总计'
            , third_money decimal(20,1) comment '三单补助费用总计'
            , actual_total_money decimal(20,1) comment '费用报销总计'
        )
        partitioned by (dt string)
        stored as orc
        location '/data/dw/dwb/one_make/fact_trvl_exp';
        
    • 抽取

      insert overwrite table one_make_dwb.fact_trvl_exp partition(dt = '20210101')
      select
      	--差旅费汇总单id
          exp_sum.id as trvl_exp_id
      	--服务网点id
          , wrk_odr.service_station_id as ss_id
      	--服务人员id
          , exp_sum.user_id as srv_user_id
      	--外出差旅费用金额总计
          , sum(case when trvl_dtl_sum.item = 1 then trvl_dtl_sum.item_money else 0 end) as biz_trip_money
          --市内交通费用金额总计
      	, sum(case when trvl_dtl_sum.item = 2 then trvl_dtl_sum.item_money else 0 end) as in_city_traffic_money
          --住宿费费用金额总计
      	, sum(case when trvl_dtl_sum.item = 3 then trvl_dtl_sum.item_money else 0 end) as hotel_money
          --车船费用金额总计
      	, sum(case when trvl_dtl_sum.item = 4 then trvl_dtl_sum.item_money else 0 end) as fars_money
          --补助费用金额总计
      	, sum(case when trvl_dtl_sum.item = 5 then trvl_dtl_sum.item_money else 0 end) as subsidy_money
          --过桥过路费用金额总计
      	, sum(case when trvl_dtl_sum.item = 6 then trvl_dtl_sum.item_money else 0 end) as road_toll_money
          --油费金额总计
      	, sum(case when trvl_dtl_sum.item = 7 then trvl_dtl_sum.item_money else 0 end) as oil_money
          --二单补助费用总计
      	, sum(case when trvl_dtl_sum.item = 8 then trvl_dtl_sum.item_money else 0 end) as secondary_money
          --三单补助费用总计
      	, sum(case when trvl_dtl_sum.item = 9 then trvl_dtl_sum.item_money else 0 end) as third_money
          --费用报销总计
      	, max(exp_sum.submoney5) as actual_total_money
      --差旅报销汇总单
      from one_make_dwd.ciss_service_trvl_exp_sum exp_sum
      --汇总报销单与工单费用单对照表
      inner join one_make_dwd.ciss_s_exp_report_wo_payment r on exp_sum.dt = '20210101' and r.dt = '20210101' and exp_sum.id = r.exp_report_id and exp_sum.status = 15
      --差旅报销单信息表
      inner join one_make_dwd.ciss_service_travel_expense exp on exp.dt = '20210101' and exp.id = r.workorder_travel_exp_id
      --工单信息表
      inner join one_make_dwd.ciss_service_workorder wrk_odr on wrk_odr.dt = '20210101' and wrk_odr.id = exp.work_order_id
      --获取每种费用项目总金额
      inner join  (
      				select
      					travel_expense_id, item, sum(submoney5) as item_money
      				from one_make_dwd.ciss_service_trvl_exp_dtl
      				where dt = '20210101'
      				group by travel_expense_id, item
      		) as trvl_dtl_sum
        on trvl_dtl_sum.travel_expense_id = exp.id
      group by exp_sum.id, wrk_odr.service_station_id, exp_sum.user_id
      ;
      
  • 小结

    • 实现DWB层差旅报销事实指标表的构建

3:网点物料事实指标分析及实现

  • 目标实现DWB层网点物料事实指标表的构建

  • 路径

    • step1:目标需求
    • step2:数据来源
    • step3:目标实现
  • 差旅报销汇总信息表实施

    • 目标需求:基于物料申请单的信息统计物料申请数量、物料申请金额等指标

      image-20211003220952233

    • 数据来源

      • ciss_material_wdwl_sqd:物料申请信息表

        select
            id,--申请单id
            code,--申请单编号
            service_station_code,--网点编号
            logistics_type,--物流公司类型
            logistics_company,--物流公司名称
            warehouse_code --仓库id
        from ciss_material_wdwl_sqd;
        
      • ciss_base_servicestation:服务网点信息表

        select
            id,--服务网点id
            code --服务网点编号
        from ciss_base_servicestation;
        
      • ciss_material_wdwl_sqd_dtl:物料申请明细表

        select
            wdwl_sqd_id,--申请单id
            application_reason,--申请理由
            count_approve,--审核数量
            price,--单价
            count --个数
        from ciss_material_wdwl_sqd_dtl;
        
    • 目标实现

      • 建表

        create table if not exists one_make_dwb.fact_srv_stn_ma(
              ma_id string comment '申请单id'
            , ma_code string comment '申请单编码'
            , ss_id string comment '服务网点id'
            , logi_id string comment '物流类型id'
            , logi_cmp_id string comment '物流公司id'
            , warehouse_id string comment '仓库id'
            , total_m_num decimal(10,0) comment '申请物料总数量'
            , total_m_money decimal(10,1) comment '申请物料总金额'
            , ma_form_num decimal(10,0) comment '申请单数量'
            , inst_m_num decimal(10,0) comment '安装申请物料数量'
            , inst_m_money decimal(10,1) comment '安装申请物料金额'
            , bn_m_num decimal(10,0) comment '保内申请物料数量'
            , bn_m_money decimal(10,1) comment '保内申请物料金额'
            , rmd_m_num decimal(10,0) comment '改造申请物料数量'
            , rmd_m_money decimal(10,1) comment '改造申请物料金额'
            , rpr_m_num decimal(10,0) comment '维修申请物料数量'
            , rpr_m_money decimal(10,1) comment '维修申请物料金额'
            , sales_m_num decimal(10,0) comment '销售申请物料数量'
            , sales_m_money decimal(10,1) comment '销售申请物料金额'
            , insp_m_num decimal(10,0) comment '巡检申请物料数量'
            , insp_m_money decimal(10,1) comment '巡检申请物料金额'
        )
        partitioned by (dt string)
        stored as orc
        location '/data/dw/dwb/one_make/fact_srv_stn_ma';
        
      • 抽取

        insert overwrite table one_make_dwb.fact_srv_stn_ma partition(dt = '20210101')
        select    
        	/*+repartition(1) */ 
            ma.id as ma_id, 	                       --物料申请单id
        	ma.code as ma_code,                        --申请单编号
        	stn.id as ss_id,                           --服务网点id
        	ma.logistics_type as logi_id,              --物流类型id
        	ma.logistics_company as logi_cmp_id,       --物流公司id
            ma.warehouse_code as warehouse_id,         --仓库id
        	sum(m_smry.cnt) as total_m_num ,           --申请物料总数量
        	sum(m_smry.money) as total_m_money,        --申请物料总金额
            count(1) as ma_form_num,                   --申请单数量
        	sum(case when m_smry.ma_rsn = 1 then m_smry.cnt else 0 end) as inst_m_num,        --安装申请物料数量   
            sum(case when m_smry.ma_rsn = 1 then m_smry.money else 0 end) as inst_m_money,    --安装申请物料金额
            sum(case when m_smry.ma_rsn = 2 then m_smry.cnt else 0 end) as bn_m_num,          --保内申请物料数量
            sum(case when m_smry.ma_rsn = 2 then m_smry.money else 0 end) as bn_m_money,      --保内申请物料金额
            sum(case when m_smry.ma_rsn = 3 then m_smry.cnt else 0 end) as rmd_m_num,         --改造申请物料数量
            sum(case when m_smry.ma_rsn = 3 then m_smry.money else 0 end) as rmd_m_money,     --改造申请物料金额
            sum(case when m_smry.ma_rsn = 4 then m_smry.cnt else 0 end) as rpr_m_num,         --维修申请物料数量
            sum(case when m_smry.ma_rsn = 4 then m_smry.money else 0 end) as rpr_m_money,     --维修申请物料金额
            sum(case when m_smry.ma_rsn = 5 then m_smry.cnt else 0 end) as sales_m_num,       --销售申请物料数量
            sum(case when m_smry.ma_rsn = 5 then m_smry.money else 0 end) as sales_m_money,   --销售申请物料金额
            sum(case when m_smry.ma_rsn = 6 then m_smry.cnt else 0 end) as insp_m_num,        --巡检申请物料数量
            sum(case when m_smry.ma_rsn = 6 then m_smry.money else 0 end) as insp_m_money     --巡检申请物料金额
        --物料申请信息表:8为审核通过
        from (
        		select * 
        		from one_make_dwd.ciss_material_wdwl_sqd 
        		where dt = '20210101' and status = 8 
        	 ) ma
        --关联站点信息表,获取站点id
        left join one_make_dwd.ciss_base_servicestation stn 
        	on stn.dt = '20210101' and ma.service_station_code = stn.code
        --关联物料申请费用明细
        left join (
        			 select 
        				dtl.wdwl_sqd_id as wdwl_sqd_id, 
        				dtl.application_reason as ma_rsn, 
        				sum(dtl.count_approve) as cnt,
                        sum(dtl.price * dtl.count) as money
                     from one_make_dwd.ciss_material_wdwl_sqd_dtl dtl
        			 where dtl.dt = '20210101'
        			 group by dtl.wdwl_sqd_id, dtl.application_reason
                  ) m_smry on m_smry.wdwl_sqd_id = ma.id
        group by ma.id, ma.code, stn.id, ma.logistics_type, ma.logistics_company, ma.warehouse_code
        ;
        
  • 小结

    • 实现DWB层网点物料事实指标表的构建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/825584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有砟铁路三维地质雷达检测数值模拟研究

有砟铁路三维地质雷达无损检测数值模拟研究 前言 据统计,全国铁路营业里程超过14.63万公里,其中高铁超过3.8万公里;全国铁路路网密度152.3公里/万平方公里。有砟铁路主要建造于2012年以前,截止2012年,全国有砟铁路达…

Baklib: 0代码的在线帮助中心

Baklib是一款0代码的在线帮助中心工具,旨在帮助企业和开发者快速搭建和管理自己的帮助中心。无需编写任何代码,只需几个简单的步骤,即可创建一个功能齐全、易于使用的在线帮助中心。Baklib提供了丰富的功能和灵活的定制选项,使用户…

关于迪文屏文本显示 字库生成

生成 30的字体 界面上显示 屏幕上文本控件的点阵数 为字库生成软件的 宽和高 30 30 字库软件的下载链接 三、汉字字库生成 百度网盘链接:百度网盘 请输入提取码 提取码:1o5t https://blog.csdn.net/qq_34118600/article/details/115469371

「如何优雅有效利用周末和下班时间?」

文章目录 每日一句正能量前言下班的时间规划周末的时间规划提升周末体验感的好方法怎样才能获得充分的休息后记 每日一句正能量 眼望古城街尽,心谱落愁无序,旧时的誓言,曾而相似,河水在遵循河道的指引下,在曲折前进中放…

通过Python调用禅道API

禅道API接口,非REST接口 调试版本:11.3 百度出来的100%都用不了(本篇除外...)。于是自己修改了网上代码,先get session,再post登录,最后调用产品列表验证,实测通过。 1 import req…

SAP 物料主数据 字段 配额安排 变化

ECC版本 字段‘配额安排’在物料主数据中,可选使用范围 S4新版本 字段‘配额安排’已经隐藏,后台字段去掉了,屏幕字段设置了不可见,系统默认选择了4

流程管理软件:优化工作流程的数字化解决方案

有这么多任务需要跟踪,一个优秀的工作流系统对于项目经理完成他们的工作至关重要。通过使用工作流软件,项目经理可以避免诸如浪费时间和资源、过度风险和损害最终结果等陷阱。他们可以放心,他们的工作将按照正确的顺序完成,并在此…

文件管理:按名称批量归类,简化整理任务!

在数字化时代,我们每天都会面对海量的文件,从文档、图片、视频到音频,各种各样的文件都在我们的电脑中汇聚。然而,你是否曾为找不到需要的文件而烦恼,或者为整理大量文件而头疼?为了帮助大家解决这些问题&a…

P3368 【模板】树状数组 2 (树状数组小进阶)(内附封面)

【模板】树状数组 2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 x x x; 求出某一个数的值。 输入格式 第一行包含两个整数 N N N、 M M M,分别表示该数列数字的个数和操作的总…

Jenkins 自动化部署实例讲解,另附安装教程!

【2023】Jenkins入门与安装_jenkins最新版本_丶重明的博客-CSDN博客 也可以结合这个互补看 前言 你平常在做自己的项目时,是否有过部署项目太麻烦的想法?如果你是单体项目,可能没什么感触,但如果你是微服务项目,相…

Vue-----package.json

前言 package.json是Node.js应用程序中的配置文件,它在Vue项目中同样非常重要。在Vue中, package.json文件包含了有关你的应用程序的重要信息,如版本号、依赖项、脚本等。 文件结构 package.json文件通常包含以下内容: {"n…

【Matter】基于Ubuntu 22.04 交叉编译chip-tool

编译工程之际,记录一下编译过程,免得后续遗忘,总结下来chip-tool 交叉编译涉及到的知识点: 需要了解如何支持交叉编译,基于GN编译框架需要理解应用库如何交叉编译,理解pkg-config的使用meson 编译&#xf…

Activiity跳转startActivity源码分析Activity启动流程(上)

1.Activity的startActivity 2.也是调用了Activity的startActivityForResult 3.实际还是startActivityForResult 带option的方法,只不过null传过去的 4.接着调用了 Instrumentation的execStartActivity方法 5.然后是IActivityManager的startActivity 6.IActivity…

WebDAV之π-Disk派盘 + Mountain Duck

Mountain Duck是来自国外的一款方便实用,功能强大的云存储空间本地管理工具。它可以帮助我们在windows电脑上将远程 FTP 空间、WebDAV、Swift、S3、Azure、Rackspace、Google Cloud 等云存储服务转入本地进行管理,使用任何应用程序即可打开远程文件,并在本地盘上工作。你可以…

CUDA_CHECK(cudaFree(...))报错CUDA error 1

GPT-3.5太好用了,报错情况如下: 总结一下, 在使用cudaFree释放之前cudaMalloc()分配的GPU内存时,报错cuda error,最有可能的几个原因就是: 试图释放已经释放的gpu内存,在调用cudafree()时确保没…

小程序自定义tabBar+Vant weapp

1.构建npm,安装Vant weapp: 1)根目录下 ,初始化生成依赖文件package.json npm init -y 2)安装vant # 通过 npm 安装 npm i vant/weapp -S --production 3)修改 package.json 文件 开发者工具创建的项…

c++11 标准模板(STL)(std::basic_ifstream)(四)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ifstream : public std::basic_istream<CharT, Traits> 类模板 basic_ifstream 实现文件流上的高层输入操作。它将 std::basic_istream…

linux学习笔记(2)----汇编LED灯实验

MX6ULL 的 IO IO的复用功能 这里的只使用了低五位&#xff0c;用来配置io口&#xff0c;其中bit0~bit3(MUX_MODE)就是设置 GPIO1_IO00 的复用功能的&#xff0c;GPIO1_IO00 一共可以复用为 9种功能 IO&#xff0c;分别对应 ALT0~ALT8。每种对应了不同的功能 io的属性配置 HY…

JDBC的书写

文章目录 基本概念操作数据库方式一&#xff08;不建议使用这种查询&#xff0c;可以sql注入&#xff09;读取properties文件 事务转账示例 获取id连接池 基本概念 持久化:把数据放在磁盘上&#xff0c;断电后还是有数据。使用execute 执行增删改返回false,查返回true 操作数…

map和set的使用(基于STL库)

前言 map和set是STL模板库中重要的关联式容器&#xff0c;与序列式容器不同的是&#xff0c;关联式容器里面存储的是<key,value>结构的键值对&#xff0c;在数据检索时比序列式容器效率更高。让我们一起来看看吧&#xff01; 目录 1.set 1.1键值对 1.2set的介绍 1.3set…