助力工业物联网,工业大数据之其他维度:组织机构【十五】

news2024/7/4 6:02:13

文章目录

    • 01:其他维度:组织机构
    • 02:其他维度:仓库、物流
    • 附录一:常见问题
      • 1.错误:没有开启Cross Join
      • 2.错误:Unable to move source

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

    • 实现

      • 建维度表

        -- 创建组织机构维度表,组织机构人员是经常变动的,所以按照日期分区
        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';
        
      • 加载

        insert overwrite table one_make_dws.dim_logistics partition(dt = '20210101')
        select
            dict_t.dicttypename as prop_name
            , dict_e.dictid as type_id
            , dict_e.dictname as type_name
        from  one_make_dwd.eos_dict_type dict_t
        inner join one_make_dwd.eos_dict_entry dict_e
            on dict_t.dt = '20210101'
                and dict_e.dt = '20210101'
                and dict_t.dicttypeid = dict_e.dicttypeid
                and dict_t.dicttypename in (
                    '物流公司'
                    , '物流类型'
                )
        order by dict_t.dicttypename, dict_e.dictid;
        
      • 使用如下写法会好一些

        insert overwrite table one_make_dws.dim_logistics partition (dt = '20210101')
        select dict_t.dicttypename as prop_name
             , dict_e.dictid       as type_id
             , dict_e.dictname     as type_name
        from one_make_dwd.eos_dict_type dict_t
                inner join one_make_dwd.eos_dict_entry dict_e on dict_t.dt = '20210101'
                and dict_e.dt = '20210101'
                and dict_t.dicttypeid = dict_e.dicttypeid   -- 通过状态字符串进行关联
                and dict_t.dicttypename in ('物流公司', '物流类型') -- 通过和物流相关的字样进行过滤
        order by prop_name, type_id;
        
  • 小结**

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

附录一:常见问题

1.错误:没有开启Cross Join

Exception in thread "main" org.apache.spark.sql.AnalysisException: Detected implicit cartesian product for INNER join between logical plans.Use the CROSS JOIN syntax to allow cartesian products between these relations
  • Spark2.x默认不允许执行笛卡尔积,除非显示申明cross join或者开启属性:spark.sql.crossJoin.enabled true

2.错误:Unable to move source

Error: org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to move source hdfs://hadoop.bigdata.cn:9000/data/dw/dws/one_make/dim_warehouse/.hive-staging_hive_2020-12-23_04-26-01_363_5663538019799519260-16/-ext-10000/part-00000-63069107-6405-4e31-a55a-6bdeefcd7d9b-c000 to destination hdfs://hadoop.bigdata.cn:9000/data/dw/dws/one_make/dim_warehouse/dt=20210101/part-00000-63069107-6405-4e31-a55a-6bdeefcd7d9b-c000; (state=,code=0)
  • 重启SparkSQL的ThriftServer,与MetaStore构建新的会话连接

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

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

相关文章

ChatGPT使用进阶,你一定要知道的应用技巧

鉴于ChatGPT的巨大能力,深入学习ChatGPT使用技巧势在必行。作为伴随着ChatGPT等大语言模型(LLM)出现的还有一个新的工程领域:提示工程(Prompt Engineering)。 提示工程(Prompt Engineering&…

前端053_单点登录SSO_刷新令牌获取新令牌

刷新令牌获取新令牌 1、创建刷新令牌组件2、添加刷新组件路由配置3、EasyMock 添加刷新令牌接口4、定义 Api 调用刷新令牌接口5、Vuex 发送请求与重置状态6、重构刷新令牌组件7、测试当应用系统请求后台资源接口时,要在请求头带上 accessToken 去请求接口,如果 accessToken 有…

【Python】Python系列教程-- Python3 OS 文件/目录方法(二十七)

文章目录 前言语法错误异常异常处理try/excepttry/except...elsetry-finally 语句 抛出异常用户自定义异常定义清理行为预定义的清理行为 前言 往期回顾: Python系列教程–Python3介绍(一)Python系列教程–Python3 环境搭建(二&…

前端数据传输失败

1 问题 通过postman可用传输数据到java但页面数据传输不成功 postman结果: 页面传输结果: 2 方法 在使用页面传输数据时不能直接使用send(username,password),我们需要使用FromData属性,将username和password添加到FromData里&…

小程序框架Mpx的下一代脚手架升级之路|滴滴开源

导读 Mpx开源之路已经走过五个年头,目前支持了滴滴内部全量的小程序业务开发,是滴滴开源委员会孵化的精品项目。 2022年至今,我们对 Mpx 框架进行了多项重要功能升级,包括组合式API开发规范、分包异步构建支持、单元测试能力建设和…

C++知识第四篇之多态

目录 一.认识多态1. 多态分类2. 虚函数a. 介绍b. 虚函数的重写c. 协变d. 析构函数 3. 多态构成条件a. 虚函数调用多态b. 析构函数多态 4. C11新特性a. overrideb. final 5. 重载、重写(覆盖)、重定义(隐藏) 二. 抽象类1.介绍2. 接口继承 三. 多态原理1. 虚函数表2. 打印虚函数表…

力扣高频SQL50题(基础版)——第八天

力扣高频SQL50题(基础版)——第八天 1 游戏玩法分析 IV 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT ROUND(count(a2.f_date)/(SELECT count(distinct player_id) FROM Activity),2) fraction FROM Activity a1 INNER JOIN (SELECT player…

电容为什么可以通交流隔直流?

电容 电容是指容纳电荷的能力,在给定电位差下自由电荷的储藏量,记为C,国际单位是法拉(F)。 如上图所示,以平行板电容器为例,简单介绍下电容的基本原理。 在两块距离较近、相互平行的金属平板上…

hashMap 源码详解

1、 HashMap 底层源码解读(源码分析知识问答) 2、 什么是哈希碰撞?或者什么是哈希冲突?为什么会发生哈希冲突? 不同的关键字通过相同的哈希函数算出了一个相同的 哈希地址,这就叫做哈希冲突。 哈希冲突主要因为 哈希表底层的数组容…

App Store搜索广告如何筛词

苹果应用市场投放搜索广告,想要达到预期目标,需要长期的并且不断的优化。除了选词和出价思路需要进行决策之外,后期如何做好筛词和调价的优化也是非常重要的。 CPA是衡量关键词获取用户成本的指标,当应用的转换率较小并且CPA大于…

旗开得胜,高考:人生的一次逆袭之旅

亲爱的读者们,大家好! 明天就是一年一度的高考,这个注定会改变莘莘学子一生的重要时刻即将到来。在这个充满期待和紧张的日子里,我想与你们分享一个关于我自己高考的故事,希望能给你们带来鼓励和启示。 那是一个阳光…

chatgpt赋能python:Python字段截取函数

Python字段截取函数 在Python编程中,经常会遇到需要从字符串中截取特定字段的情况,比如从URL中截取域名、从邮件地址中截取用户名等等。Python提供了多种方法来实现这些功能,其中包括字符串的切片、正则表达式、split()函数等等。在本文中&a…

关于分布式项目的补偿机制(案例总结)

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、…

走近人工智能|NLP的语言革命

前言: 自然语言处理(NLP)是指使用计算机处理和理解人类语言的技术。 文章目录 自然语言序言背景适用领域技术支持应用领域程序员如何学总结 自然语言 序言 自然语言处理(Natural Language Processing,NLP&#xff09…

scratch绘制多彩五角星 中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析2023年5月

目录 scratch绘制多彩五角星 一、题目要求 1、准备工作 2、功能实现 二、案例分析

口琴试试看

自己的第一把口琴 给初学者入门的口琴推荐指南,选购口琴不再困难(2023.2更新) 初学者入门口琴选购 (复音/半音阶/布鲁斯十孔口琴推荐) 推荐半音:三种类型的口琴,该学哪一种?十孔口琴低音还面…

Android系统的Ashmem匿名共享内存子系统分析(2)- 运行时库cutils的Ashmem访问接口

声明 其实对于Android系统的Ashmem匿名共享内存系统早就有分析的想法,记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾…文中参考了很多书籍及博客内容,可能涉及的比较…

带领你打开C++的神秘之门--完结篇

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

【耗时一月】AWS Aurora 数据库 Failover 处理方案

Aurora简述 Amazon Aurora 是亚马逊自研的云原生数据库,除兼容性、性能、扩展性外,它在设计之初,就以极致的可用性作为目标,尽可能减少故障对应用程序的影响。 Amazon Aurora 在故障恢复方面的设计理念主要包括: 1. 能…

Lecture 11 Contextual Representation

目录 Problems with Word Vectors/Embeddings 词向量/嵌入的问题RNN 语言模型Bidirectional RNN 双向 RNNEmbeddings from Language Models 基于语言模型的嵌入ELMo 架构Downstream Task: POS Tagging 下游任务:词性标注ELMo 的表现如何?Other Findings上…