电商数仓(dws 层)

2023-10-10 02:40
文章标签 dws 商数

本文主要是介绍电商数仓(dws 层),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、dws 层介绍

统计各个主题对象的当天行为,服务于 DWT 层的主题宽表,以及一些业务明细数据,应对特殊需求(例如,购买行为,统计商品复购率)。
在这里插入图片描述

二、dws 层用户行为数据

2.1 每日设备行为 dws_uv_detail_daycount

1、介绍
每日设备行为,主要按照设备 id 统计。

2、数据来源
dwd_start_log

3、建表

drop table if exists dws_uv_detail_daycount; 
create external table dws_uv_detail_daycount ( `mid_id` string COMMENT '设备唯一标识', `user_id` string COMMENT '用户标识', `version_code` string COMMENT '程序版本号',`version_name` string COMMENT '程序版本名', `lang` string COMMENT '系统语言', `source` string COMMENT '渠道号', `os` string COMMENT '安卓系统版本', `area` string COMMENT '区域', `model` string COMMENT '手机型号', `brand` string COMMENT '手机品牌', `sdk_version` string COMMENT 'sdkVersion', `gmail` string COMMENT 'gmail', `height_width` string COMMENT '屏幕宽高', `app_time` string COMMENT '客户端日志产生时的时间', `network` string COMMENT '网络模式', `lng` string COMMENT '经度', `lat` string COMMENT '纬度', `login_count` bigint COMMENT '活跃次数'
) 
partitioned by(dt string) 
stored as parquet 
location '/warehouse/gmall/dws/dws_uv_detail_daycount'
tblproperties ("parquet.compression"="lzo");

4、加载数据

insert overwrite table dws_uv_detail_daycount partition(dt='2020-03-10') 
select mid_id, concat_ws('|', collect_set(user_id)) user_id, concat_ws('|', collect_set(version_code)) version_code, concat_ws('|', collect_set(version_name)) version_name, concat_ws('|', collect_set(lang))lang, concat_ws('|', collect_set(source)) source, concat_ws('|', collect_set(os)) os, concat_ws('|', collect_set(area)) area, concat_ws('|', collect_set(model)) model, concat_ws('|', collect_set(brand)) brand, concat_ws('|', collect_set(sdk_version)) sdk_version, concat_ws('|', collect_set(gmail)) gmail, concat_ws('|', collect_set(height_width)) height_width, concat_ws('|', collect_set(app_time)) app_time, concat_ws('|', collect_set(network)) network, concat_ws('|', collect_set(lng)) lng, concat_ws('|', collect_set(lat)) lat, count(*) login_count 
from dwd_start_log 
where dt='2020-03-10'
group by mid_id;

三、dws 层业务数据表

DWS 层的宽表字段,是站在不同维度的视角去看事实表,重点关注事实表的度量值。

3.1 每日会员行为 dws_user_action_daycount

1、数据来源
dwd_start_log、dwd_fact_cart_info、dwd_fact_order_info、dwd_fact_payment_info。

2、建表

drop table if exists dws_user_action_daycount; 
create external table dws_user_action_daycount ( user_id string comment '用户 id', login_count bigint comment '登录次数', cart_count bigint comment '加入购物车次数', cart_amount double comment '加入购物车金额', order_count bigint comment '下单次数', order_amount decimal(16,2) comment '下单金额', payment_count bigint comment '支付次数', payment_amount decimal(16,2) comment '支付金额' 
) COMMENT '每日用户行为' 
PARTITIONED BY (`dt` string) 
stored as parquet 
location '/warehouse/gmall/dws/dws_user_action_daycount/' 
tblproperties ("parquet.compression"="lzo");

3、加载数据

with 
tmp_login as 
( select user_id, count(*) login_count from dwd_start_log where dt='2020-03-10' and user_id is not null group by user_id 
), 
tmp_cart as 
( select user_id, count(*) cart_count,sum(cart_price*sku_num) cart_amount from dwd_fact_cart_info where dt='2020-03-10' and user_id is not null and date_format(create_time,'yyyy-MM-dd')='2020-03-10'group by user_id
), 
tmp_order as 
( select user_id, count(*) order_count, sum(final_total_amount) order_amount from dwd_fact_order_info where dt='2020-03-10'group by user_id 
) , 
tmp_payment as 
( select user_id, count(*

这篇关于电商数仓(dws 层)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177346

相关文章

大数据-案例-离线数仓-在线教育:MySQL(业务数据)-ETL(Sqoop)->Hive数仓【ODS层-数据清洗->DW层(DWD-统计分析->DWS)】-导出(Sqoop)->MySQL->可视化

一、商业BI系统概述 商业智能系统,通常简称为商业智能系统,是商业智能软件的简称,是为提高企业经营绩效而采用的一系列方法、技术和软件的总和。通常被理解为将企业中的现有数据转换为知识并帮助企业做出明智的业务决策的工具。 BI系统中的数据来自企业的其他业务系统。例如,一个面向业务的企业,其业务智能系统数据包括业务系统订单、库存、交易账户、客户和供应商信息,以及企业所属行业和竞争对手的数据,以及其他

大数据中的电商数仓项目:探秘业务的核心

我学习完一个电商数仓的项目和电影实时推荐项目,便兴冲冲的去面试大数据开发岗,在面试的时候,面试官总是喜欢问,聊聊你为什么要做这个项目以及你这个项目有哪些业务? 我心想,为什么要做这个业务?我在网上看视频学的啊,正好老师讲了这个项目,正好我就学了,很简单哇;至于项目有哪些业务?我都不知道业务是什么,又怎么会知道项目有哪些业务🥺 但是我肯定不能按我真实想法说,便开始长篇大论的乱扯。 不出意料,每次面

高斯DWS数据库根据数据业务时间以及指标周期判断是否滞后

背景 在判断指标更新是否及时的过程中,需要根据指标的更新周期和更新时间判断指标更新是否及时,业务更新周期分别有每日、每小时、实时、每天、每月、每季度、每半年、每年、不定期、不更新等,代码中最细粒度只到天维度,小时级和分钟级不统计; 代码 case when ysjgxzq = '每日' or ysjgxzq = '每小时' or ysjgxzq = '实时' then case when

宽表和数仓dws层

宽表 意思是 把很多的 维度、指标都合到一个表里,需要冗余,为了后续数据统计方便     宽表由于把不同的内容都放在同一张表存储,宽表已经不符合三范式的模型设计规范,随之带来的主要坏处就是数据的大量冗余,与之相对应的好处就是查询性能的提高与便捷。   dws     就是主题宽表     不一定就是只一张表          dws就是 数据较高程度的聚合,不同类型的内容要聚合到一起,冗

离线电商数仓知识笔记沉淀-流程及用户行为采集平台

learn by :尚硅谷数仓6.0 前置储备: 采集项目和数仓项目的区别:二者具有独立性 1功能角度: 采集项目:以数据的采集、传输为主 数仓项目:以数据计算为主、同时可以储存数据 2以功能延伸到技术区别: 采集项目:flume、kafka、datax、maxwell 数仓项目:mysql、hdfs、spark、Flink、MR、hive 数据库和数据仓库区分: 名称区分

大数据项目之电商数仓

大数据项目之电商数仓(用户行为数据采集)数据仓库简介 1.什么是数据库 数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。数据库是长期存储在计算机内、有组织的、可共享的数据集合。数据库中二点数据指的是以一定的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享。常用的数据库有:Mysq

mt2503 用Dct tool打开codegen.dws提示版本 不match

用Dct Tool去打开codegen.dws时,有时会提示如下信息: codegen.dws version and DrvGen.exe version are not matched! 出现这样的信息时,只需点击“确定”即可正常使用,主要是因为您现在使用的Dcttool的版本比create您现在打开的dws使用的tool版本高 但是因为我们的tool是向前兼容的,也就是,新的tool可

精准处理各种包裹,中科微至DWS多面读码系统”显神通“

现如今,我国快递已经进入千亿时代,每天有数以亿计的包裹将要进行输送和分拣。数据显示,2021年、2022年,我国快递业务量连续两年突破一千亿件。庞大的快递业务体量,对包裹分拣自动化水平提出了更高要求。而一系列自动化处理设备的应用,让快递分拣不再难。在这其中,机器视觉产品的应用可以支持精准的包裹信息处理,提升行业自动化水平,中科微至以成熟的DWS多面读码系统,为行业整体作业效率带来持续提升。 方

(38)DWS层

1 每日设备行为 每日设备行为,主要按照设备 id 统计。   1 )建表语句 hive (gmall)> drop table if exists dws_uv_detail_daycount; create external table dws_uv_detail_daycount ( `mid_id`