助力工业物联网,工业大数据之其他维度:组织机构【十六】_组织机构属于什么类型的维度表

60 阅读4分钟
+ [02:其他维度:仓库、物流](#02_101)
+ [附录一:常见问题](#_215)
+ - [1.错误:没有开启Cross Join](#1Cross_Join_217)
	- [2.错误:Unable to move source](#2Unable_to_move_source_227)

01:其他维度:组织机构

  • 目标实现组织机构维度的设计及构建

  • 路径

    • step1:需求
    • step2:设计
    • step3:实现
  • 实施

    • 需求:实现组织机构维度表的构建,得到每个工程师对应的组织机构信息

    image-20211003103949211

      - 统计不同服务人员的工单数、核销数等
    
    • 设计

      • org_employee:员工信息表【员工id、员工编码、员工名称、用户系统id】

      select empid,empcode,empname,userid from org_employee;
      
      
      • org_empposition:员工岗位信息表【员工id、岗位id】

      select empid,positionid from org_empposition;
      
      
      • org_position:岗位信息表【岗位id、岗位编码、岗位名称、部门id】

      select positionid,posicode,posiname,orgid from org_position;
      
      
      • org_organization:部门信息表【部门id、部门编码、部门名称】

      select orgid,orgcode,orgname from org_organization;
      
      ```![image-20211010153834323](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/a7c963bdbb1b4f51bba40a838f25ed77~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771259845&x-signature=szu0zOQyxeaoEKN5Lw0xByPxBS0%3D)
      
    • 实现

      • 建维度表

      -- 创建组织机构维度表,组织机构人员是经常变动的,所以按照日期分区
      create external table if not exists one_make_dws.dim_emporg(
          empid string comment '人员id'   
          , empcode string comment '人员编码(erp对应的账号id)'
          , empname string comment '人员姓名'
          , userid string comment '用户系统id(登录用户名)'
          , posid string comment '岗位id'
          , posicode string comment '岗位编码'
          , posiname string comment '岗位名称'
          , orgid string comment '部门id'
          , orgcode string comment '部门编码'
          , orgname string comment '部门名称'
      ) comment '组织机构维度表'
      partitioned by (dt string)
      stored as orc
      location '/data/dw/dws/one\_make/dim\_emporg';
      
      
      • 抽取数据

      -- 先根据dwd层的表进行关联,然后分别把数据取出来
      insert overwrite table one_make_dws.dim_emporg partition(dt='20210101')
      select
          emp.empid as empid
          , emp.empcode as empcode
          , emp.empname as empname
          , emp.userid as userid
          , pos.positionid as posid
          , pos.posicode as posicode
          , pos.posiname as posiname
          , org.orgid as orgid
          , org.orgcode as orgcode
          , org.orgname as orgname
      from  one_make_dwd.org_employee emp
      left join one_make_dwd.org_empposition emppos
          on emp.empid = emppos.empid and emp.dt = '20210101' and emppos.dt = '20210101'
      left join one_make_dwd.org_position pos
          on emppos.positionid = pos.positionid and pos.dt = '20210101'
      left join one_make_dwd.org_organization org
          on pos.orgid = org.orgid and org.dt = '20210101';
      
      
  • 小结

    • 实现组织机构维度的设计及构建

02:其他维度:仓库、物流

  • 目标实现仓库维度、物流维度的构建

  • 路径

    • step1:仓库维度
    • step2:物流维度
  • 实施

    • 仓库维度

      • 建表

      -- 仓库维度表
      create external table if not exists one_make_dws.dim_warehouse(
          code string comment '仓库编码'
          , name string comment '仓库名称'
          , company_id string comment '所属公司'
          , company string comment '公司名称'
          , srv_station_id string comment '所属服务网点ID'
          , srv_station_name string comment '所属服务网点名称'
      )comment '仓库维度表'
      partitioned by (dt string)
      stored as orc
      location '/data/dw/dws/one\_make/dim\_warehouse';
      
      
      • 加载

      insert overwrite table one_make_dws.dim_warehouse partition(dt='20210101')
      select
          warehouse.code as code
          , warehouse.name as name
          , warehouse.company as company_id
          , cmp.compmay as compmay
          , station.id as srv_station_id
          , station.name as srv_station_name
      from
          one_make_dwd.ciss_base_warehouse warehouse
      -- 关联公司信息表
      left join (
           select
                 ygcode as company_id, max(companyname) as compmay
           from one_make_dwd.ciss_base_baseinfo where dt='20210101'
           -- 需要对company信息进行分组去重,里面有一些重复数据 
           group by ygcode) cmp
           on warehouse.dt = '20210101' and cmp.company_id = warehouse.company
      -- 关联服务网点和仓库关系表
      left join one_make_dwd.ciss_r_serstation_warehouse station_r_warehouse
           on station_r_warehouse.dt = '20210101' and station_r_warehouse.warehouse_code = warehouse.code
      -- 关联服务网点表 
      left join one_make_dwd.ciss_base_servicestation station
           on station.dt = '20210101' and station.id = station_r_warehouse.service_station_id;
      
      
    • 物流维度

      • 建表

      -- 物流维度表(和服务属性表类似)
      create external table if not exists one_make_dws.dim_logistics(
          prop_name string comment '字典名称'
          , type_id string comment '属性id'
          , type_name string comment '属性名称'
      )comment '物流维度表'
      partitioned by (dt string)
      stored as orc
      location '/data/dw/dws/one\_make/dim\_logistics';
      
      
      • 加载

img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取