助力工业物联网,工业大数据之服务域:油站主题分析【二十六】

文章目录

07:服务域:油站主题分析

  • 目标掌握油站主题的需求分析

  • 路径

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

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

    • 分析

      • 指标:油站数量、新增油站数量

      • 维度

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

        • 事实表

          • fact_oil_station:油站事实表

            sql 复制代码
            select
                os_num,--油站个数
                current_new_os_num --新增油站个数
            from fact_oil_station;
          • 维度表

            • dim_oilstation:油站维度表

              sql 复制代码
              select
                  id,--油站id
                  company_name,--公司名称
                  province_name,--省份名称
                  city_name,--城市名称
                  county_name,--区域名称
                  customer_classify_name,--客户名称
                  customer_province_name--客户省份
              from dim_oilstation;
            • dim_date:时间维度表

              sql 复制代码
              select
                  date_id,--天
                  week_in_year_id,--周
                  year_month_id --月
              from dim_date;
  • 实现分析

    复制代码
    select
    
           a.os_id,--油站id
    
           sum(a.os_num),--油站数量
    
           sum(a.current_new_os_num),--新增油站数量
    
           b.date_id,--天
    
           b.week_in_year_id,--周
    
           b.year_month_id, --月
    
           c.company_name,--公司名称
    
           c.province_name,--省份名称
    
           c.city_name,--城市名称
    
           c.county_name,--区域名称
    
           c.customer_classify_name,--客户名称
    
           c.customer_province_name--客户省份
    
       from fact_oil_station a
    
       join one_make_dws.dim_date b on a.dt = b.date_id
    
       join one_make_dws.dim_oilstation c on a.os_id = c.id
    
       group by
    
           b.date_id,--天
    
           b.week_in_year_id,--周
    
           b.year_month_id, --月
    
           c.company_name,--公司名称
    
           c.province_name,--省份名称
    
           c.city_name,--城市名称
    
           c.county_name,--区域名称
    
           c.customer_classify_name,--客户名称
    
           c.customer_province_name;--客户省份;
  • 小结

    • 掌握油站主题的需求分析

08:服务域:油站主题实现

  • 目标实现油站主题表的维度指标构建

  • 实施

    • 建表

      sql 复制代码
      -- 创建油站主题表
      drop table if exists one_make_st.subj_oilstation;
      create table if not exists one_make_st.subj_oilstation(
          sum_osnum bigint comment '油站数量'
          ,sumnew_osnum int 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_oilstation';
    • 构建

      sql 复制代码
      insert overwrite table one_make_st.subj_oilstation partition(month = '202101', week='2021W1', day='20210101')
      select
          sum(oil.os_num) sum_osnum,                          --油站数量
      	sum(oil.current_new_os_num) sumnew_osnum,           --新增油站数量
          dd.date_id dws_day,                                 --日期天
      	dd.week_in_year_id dws_week,                        --日期周
      	dd.year_month_id dws_month,                         --日期月
          dimoil.company_name oil_type,                       --油站类型
      	dimoil.province_name oil_province,                  --油站省份
      	dimoil.city_name oil_city,                          --油站城市
          dimoil.county_name oil_county,                      --油站区域
      	dimoil.customer_classify_name customer_classify,    --客户类型
          dimoil.customer_province_name customer_province     --客户省份
      --油站事务事实表
      from one_make_dwb.fact_oil_station oil
      --关联日期维度表
      left join one_make_dws.dim_date dd on oil.dt = dd.date_id
      --关联油站维度表
      left join one_make_dws.dim_oilstation dimoil on oil.os_id = dimoil.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,  dimoil.company_name, dimoil.province_name, dimoil.city_name, dimoil.county_name, dimoil.customer_classify_name, dimoil.customer_province_name;
  • 小结

    • 实现油站主题表的维度指标构建
相关推荐
寻星探路3 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
陌上丨5 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
曹牧5 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
AI_56786 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ccecw6 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH30736 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
CRzkHbaXTmHw6 小时前
探索Flyback反激式开关电源的Matlab Simulink仿真之旅
大数据
数据知道6 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
爬山算法6 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
七夜zippoe6 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann