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

文章目录

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;
  • 小结

    • 实现油站主题表的维度指标构建
相关推荐
困知勉行19853 分钟前
Redis数据结构及其底层实现
数据库·redis·缓存
悟能不能悟5 分钟前
java HttpServletRequest 设置header
java·开发语言
豆豆8 分钟前
2026年建设网站的十个步骤
大数据·cms·网站建设·网站制作·低代码平台·建站·网站设计
一直在追10 分钟前
告别 WHERE id=1!大数据工程师的 AI 觉醒:手把手带你拆解向量数据库 (RAG 核心)
大数据·数据库
悟空码字12 分钟前
SpringBoot整合FFmpeg,打造你的专属视频处理工厂
java·spring boot·后端
独自归家的兔14 分钟前
Spring Boot 版本怎么选?2/3/4 深度对比 + 迁移避坑指南(含 Java 8→21 适配要点)
java·spring boot·后端
Gofarlic_OMS15 分钟前
协同设计平台中PTC许可证的高效调度策略
网络·数据库·安全·oracle·aigc
新芒16 分钟前
海尔智家加速全球体育营销
大数据·人工智能
刘一说17 分钟前
Windows 与 Linux 跨平台自动化 MySQL 8 备份:专业级脚本设计与实战指南
linux·数据库·windows·mysql·自动化
郝学胜-神的一滴23 分钟前
线程同步:并行世界的秩序守护者
java·linux·开发语言·c++·程序人生