preview_220624,Day08_DM层建设实战,

DM

  • 名称:数据集市层 Data Market

  • 功能:基于DWS层日统计宽表,上卷出周、月、年等统计宽表,即粗粒度汇总。

  • 解释

    • 从理论层面来说,数据集市是一个小型的部门或工作组级别的数据仓库。

    • 一些公司早期的数据集市后期可能会演变成为数仓系统。

    • 本项目中在数据集市层面主要进行粗粒度汇总,也可以将这些功能下放至DWS层完成。抛弃DM.

使用DataGrip在Hive中创建dm层

注意,对于建库建表操作,需直接使用Hive,因为Presto只是一个数据分析的引擎,其语法不一定支持直接在Hive中建库建表。

知识点03:DM层搭建--销售主题统计宽表--建模

概述

DM层销售主题宽表,基于DWS层销售主题日统计宽表的值,上卷统计出年、月、周的数据

指标和DWS一致。

指标

销售收入、平台收入、配送成交额、小程序成交额、安卓APP成交额、苹果APP成交额、PC商城成交额、订单量、参评单量、差评单量、配送单量、退款单量、小程序订单量、安卓APP订单量、苹果APP订单量、PC商城订单量

维度

日期:天(已经统计过), 周,  月, 年
日期+城市
日期+商圈
日期+店铺
日期+品牌
日期+大类
日期+中类
日期+小类

建表

整个表和DWS层销售主题统计宽表dws_sale_daycount的区别就在于多了开头的时间粒度字段。

用于标识后面的指标是哪个时间粒度统计出来的指标。

知识点04:DM层搭建--销售主题统计宽表--表关系梳理

  • 销售主题各种指标的数据支撑

    • dws_sale_daycount

时间粒度的数据支撑

  • dwd.dim_date 时间维表

企业中,时间维表数据是怎么维护的呢?

1、维护频率:一次性生成1年或者多年的时间数据。

2、使用java、Python代码实现数据的生成。

关联条件

yp_dws.dws_sale_daycount dc
    left join yp_dwd.dim_date d on dc.dt = d.date_code

知识点05:DM层搭建--销售主题统计宽表--按年统计

在dws层已经统计出天的指标数据了,现在需要在其之上上卷计算出周、月、年的数据。

这里并不是简单的分组+sum求和即可,需要考虑到分组的类别。

step1:确定分组字段

年+城市

年+商圈

年+店铺

年+品牌

年+大类

年+中类

年+小类

(对于销售主题 在DM层 分析的维度不变 时间的粒度改变)

group by
grouping sets (
    (d.year_code),
    (d.year_code, city_id, city_name),
    (d.year_code, city_id, city_name, trade_area_id, trade_area_name),
    (d.year_code, city_id, city_name, trade_area_id, trade_area_name, store_id, store_name),
    (d.year_code, brand_id, brand_name),
    (d.year_code, max_class_id, max_class_name),
    (d.year_code, max_class_id, max_class_name,mid_class_id, mid_class_name),
    (d.year_code, max_class_id, max_class_name,mid_class_id, mid_class_name,min_class_id, min_class_name))
;

step2:分组聚合

-- 统计值
    sum(dc.sale_amt) as sale_amt,
    sum(dc.plat_amt) as plat_amt,
    sum(dc.deliver_sale_amt) as deliver_sale_amt,
    sum(dc.mini_app_sale_amt) as mini_app_sale_amt,
    sum(dc.android_sale_amt) as android_sale_amt,
    sum(dc.ios_sale_amt) as ios_sale_amt,
    sum(dc.pcweb_sale_amt) as pcweb_sale_amt,
    sum(dc.order_cnt) a

你可能感兴趣的:(Python,大数据,数据挖掘,数据仓库)