大数据 - DWS层 业务实现

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据 - DWS层 业务实现
统计主题 需求指标【ADS】 输出方式 计算来源 来源层级
访客【DWS】 pv 可视化大屏 page_log 直接可求 dwd
UV(DAU) 可视化大屏 需要用 page_log 过滤去重 dwm
UJ 跳出率 可视化大屏 需要通过 page_log 行为判断 dwm
进入页面数 可视化大屏 需要识别开始访问标识 dwd
连续访问时长 可视化大屏 page_log 直接可求 dwd
商品 点击 多维分析 page_log 直接可求 dwd
收藏 多维分析 收藏表 dwd
加入购物车 多维分析 购物车表 dwd
下单 可视化大屏 订单宽表 dwm
支付 多维分析 支付宽表 dwm
退款 多维分析 退款表 dwd
评论 多维分析 评论表 dwd
地区 PV 多维分析 page_log 直接可求 dwd
UV 多维分析 需要用 page_log 过滤去重 dwm
下单 可视化大屏 订单宽表 dwm
关键词 搜索关键词 可视化大屏 页面访问日志 直接可求 dwd
点击商品关键词 可视化大屏 商品主题下单再次聚合 dws
下单商品关键词 可视化大屏 商品主题下单再次聚合 dws

DWS 层的定位是什么

  • 轻度聚合,因为 DWS 层要应对很多实时查询,如果是完全的明细那么查询的压力是非常大的。
  • 将更多的实时数据以主题的方式组合起来便于管理,同时也能减少维度查询的次数。

DWS 层-访客主题宽表的计算

统计主题 需求指标【ADS】 输出方式 计算来源 来源层级
访客【DWS】 PV 可视化大屏 page_log 直接可求 dwd
UV(DAU) 可视化大屏 需要用 page_log 过滤去重 dwm
跳出率 可视化大屏 需要通过 page_log 行为判断 dwm
进入页面数 可视化大屏 需要识别开始访问标识 dwd
连续访问时长 可视化大屏 page_log 直接可求 dwd

设计一张 DWS 层的表其实就两件事:维度和度量(事实数据)

  • 度量包括 PV、UV、跳出次数、进入页面数(session_count)、连续访问时长
  • 维度包括在分析中比较重要的几个字段:渠道、地区、版本、新老用户进行聚合

需求分析与思路

  • 接收各个明细数据,变为数据流
  • 把数据流合并在一起,成为一个相同格式对象的数据流
  • 对合并的流进行聚合,聚合的时间窗口决定了数据的时效性
  • 把聚合结果写在数据库中

功能实现

封装 VisitorStatsApp,读取 Kafka 各个流数据

访客主题宽表计算

  • 要不要把多个明细的同样的维度统计在一起?
  • 因为单位时间内 mid 的操作数据非常有限不能明显的压缩数据量(如果是数据量够大,或者单位时间够长可以)
  • 所以用常用统计的四个维度进行聚合 渠道、新老用户、app 版本、省市区域
  • 度量值包括 启动、日活(当日首次启动)、访问页面数、新增用户数、跳出数、平均页面停留时长、总访问时长
  • 聚合窗口: 10 秒
  • 各个数据在维度聚合前不具备关联性,所以先进行维度聚合
  • 进行关联 这是一个 fulljoin
  • 可以考虑使用 FlinkSQL 完成
合并数据流

把数据流合并在一起,成为一个相同格式对象的数据流

合并数据流的核心算子是 union。但是 union 算子,要求所有的数据流结构必须一致。所以 union 前要调整数据结构。

根据维度进行聚合
  • 设置时间标记及水位线,因为涉及开窗聚合,所以要设定事件时间及水位线
  • 分组 分组选取四个维度作为 key , 使用 Tuple4 组合
  • 开窗
  • 窗口内聚合及补充时间字段
  • 写入 OLAP 数据库

为何要写入 ClickHouse 数据库,ClickHouse 数据库作为专门解决大量数据统计分析的数据库,在保证了海量数据存储的能力,同时又兼顾了响应速度。而且还支持标准 SQL,即灵活又易上手。

flink-connector-jdbc 是官方通用的 jdbcSink 包。只要引入对应的 jdbc 驱动,flink 可以用它应对各种支持 jdbc 的数据库,比如 phoenix 也可以用它。但是这个 jdbc-sink 只支持数据流对应一张数据表。如果是一流对多表,就必须通过自定义的方式实现了,比如之前的维度数据。

虽然这种 jdbc-sink 只能一流对一表,但是由于内部使用了预编译器,所以可以实现批量提交以优化写入速度。

DWS 层-商品主题宽表的计算

商品 点击 多维分析 page_log 直接可求 dwd
收藏 多维分析 收藏表 dwd
加入购物车 多维分析 购物车表 dwd
下单 可视化大屏 订单宽表 dwm
支付 多维分析 支付宽表 dwm
退款 多维分析 退款表 dwd
评论 多维分析 评论表 dwd

与访客的 dws 层的宽表类似,也是把多个事实表的明细数据汇总起来组合成宽表。

需求分析与思路

  • 从 Kafka 主题中获得数据流
  • 把 Json 字符串数据流转换为统一数据对象的数据流
  • 把统一的数据结构流合并为一个流
  • 设定事件时间与水位线
  • 分组、开窗、聚合
  • 关联维度补充数据
  • 写入 ClickHouse

功能实现

  • 封装商品统计实体类 ProductStats
  • 创建 ProductStatsApp,从 Kafka 主题中获得数据流
  • 把 JSON 字符串数据流转换为统一数据对象的数据流
  • 创建电商业务常量类 GmallConstant
  • 把统一的数据结构流合并为一个流
  • 设定事件时间与水位线
  • 分组、开窗、聚合
  • 补充商品维度信息
    因为除了下单操作之外,其它操作,只获取到了商品的 id,其它维度信息是没有的
  • 写入 ClickHouse product_stats

DWS 层-地区主题表(FlinkSQL)

地区 PV 多维分析 page_log 直接可求 dwd
UV 多维分析 需要用 page_log 过滤去重 dwm
下单 可视化大屏 订单宽表 dwm

地区主题主要是反映各个地区的销售情况。从业务逻辑上地区主题比起商品更加简单,业务逻辑也没有什么特别的就是做一次轻度聚合然后保存,所以在这里我们体验一下使用 FlinkSQL,来完成该业务。

需求分析与思路

  • 定义 Table 流环境
  • 把数据源定义为动态表
  • 通过 SQL 查询出结果表
  • 把结果表转换为数据流
  • 把数据流写入目标数据库
    如果是 Flink 官方支持的数据库,也可以直接把目标数据表定义为动态表,用 insert into 写入。由于ClickHouse目前官方没有支持的jdbc连接器(目前支持Mysql、PostgreSQL、Derby)。也可以制作自定义 sink,实现官方不支持的连接器。但是比较繁琐。

功能实现

DWS 层-关键词主题宽表的计算

关键词 搜索关键词 可视化大屏 页面访问日志 直接可求 dwd
点击商品关键词 可视化大屏 商品主题下单再次聚合 dws
下单商品关键词 可视化大屏 商品主题下单再次聚合 dws

需求分析与思路

关键词主题这个主要是为了大屏展示中的字符云的展示效果,用于感性的让大屏观看者感知目前的用户都更关心的那些商品和关键词。

关键词的展示也是一种维度聚合的结果,根据聚合的大小来决定关键词的大小。

关键词的第一重要来源的就是用户在搜索栏的搜索,另外就是从以商品为主题的统计中获取关键词。

功能实现

关于分词

以我们需要根据把长文本分割成一个一个的词,这种分词技术,在搜索引擎中可能会用到。对于中文分词,现在的搜索引擎基本上都是使用的第三方分词器,咱们在计算数据中也可以,使用和搜索引擎中一致的分词器,IK。

<dependency>
 <groupId>com.janeluo</groupId>
 <artifactId>ikanalyzer</artifactId>
 <version>2012_u6</version>
</dependency>

有了分词器,那么另外一个要考虑的问题就是如何把分词器的使用揉进 FlinkSQL 中。

因为 SQL 的语法和相关的函数都是 Flink 内定的,想要使用外部工具,就必须结合自定义函数。

https://www.bilibili.com/video/BV1Ju411o7f8/?p=115

尚硅谷 源代码

大数据 - 数据仓库-实时数仓架构分析

大数据 - 业务数据采集-FlinkCDC

大数据 - DWD&DIM 行为数据

大数据 - DWD&DIM 业务数据

大数据 - DWM层 业务实现

大数据 - DWS层 业务实现

大数据 - ADS 数据可视化实现

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
6月前
|
SQL Oracle 物联网
助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】
助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】
87 0
|
1月前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
15天前
|
数据采集 监控 数据管理
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第26天】随着信息技术的发展,数据成为企业核心资源。本文探讨大数据平台的搭建与数据质量管理,包括选择合适架构、数据处理与分析能力、数据质量标准与监控机制、数据清洗与校验及元数据管理,为企业数据治理提供参考。
56 1
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
48 3
|
2天前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
30 7
|
2天前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
12 2
|
9天前
|
存储 大数据 定位技术
大数据 数据索引技术
【10月更文挑战第26天】
22 3
|
9天前
|
存储 大数据 OLAP
大数据数据分区技术
【10月更文挑战第26天】
33 2
|
12天前
|
消息中间件 分布式计算 大数据
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
41 2
|
14天前
|
数据采集 分布式计算 大数据
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第27天】在数字化时代,数据治理对于确保数据资产的保值增值至关重要。本文探讨了大数据平台的搭建和数据质量管理的重要性及实践方法。大数据平台应包括数据存储、处理、分析和展示等功能,常用工具如Hadoop、Apache Spark和Flink。数据质量管理则涉及数据的准确性、一致性和完整性,通过建立数据质量评估和监控体系,确保数据分析结果的可靠性。企业应设立数据治理委员会,投资相关工具和技术,提升数据治理的效率和效果。
46 2