spark项目总结

一、用户活跃度分析:

需求1:最近一个月内,每个用户的最大连续活跃天数

解释:这个需求旨在找出每个用户在最近一个月内连续活跃的最长天数。这有助于识别高度活跃的用户群体。

为什么做:

用户分层:根据连续活跃天数,可以将用户分为不同的活跃层级,从而可以更好的实施精准的用户运营策略。

活跃度监测:了解用户的最大连续活跃天数变化,可以监测用户活跃度的变化趋势,及时发现并应对可能的用户活跃度下降。

怎么做:调整start_dt和end_dt以确保它们都在查询的最近一个月范围内。

如果start_dt早于这个范围,则将其设置为范围的开始(即查询日期向前推30天);

如果end_dt是'9999-12-31',则将其替换为查询的当前日期('2022-11-23')。

然后,它计算从调整后的start_dt到end_dt的连续天数差(加1以包含起始和结束日期),并将这个值命名为x1,再求x1的最大值

需求2:最近一个月内,连续活跃[1-10)天的人数,[10-20)天的人数,[20+ 天的人数

解释:这个需求将用户按照连续活跃天数划分为不同的区间,并统计每个区间内的人数。

为什么做:

用户活跃度分布:了解不同活跃度区间的用户分布情况,有助于评估用户整体的活跃度水平。

运营策略制定:针对不同活跃度的用户群体,可以制定不同的运营策略,如激励低活跃度用户提高活跃度,或维护高活跃度用户的持续使用。

怎么做:调整start_dt和end_dt以确保它们都在查询的最近一个月范围内。

如果start_dt早于这个范围,则将其设置为范围的开始(即查询日期向前推30天);

如果end_dt是'9999-12-31',则将其替换为查询的当前日期('2022-11-23')。

然后,它计算从调整后的start_dt到end_dt的连续天数差(加1以包含起始和结束日期),并将这个值命名为x1。

根据CASE表达式将每个设备的deviceid根据其x1值分配到相应的范围内(1-10天、10-20天、20天以上),

并使用COUNT(DISTINCT ...)来统计每个范围内不同设备的数量。

需求3:最近一个月内,沉默天数超过3天的有多少人,超过5天有多少人

解释:这个需求统计了在最近一个月内,沉默(未活跃)天数超过特定值(如3天、5天)的用户数量。

为什么做:

用户流失预警:沉默天数较长的用户可能面临流失风险,通过统计这些数据,可以及时发现并采取措施挽回这些用户。

运营效果评估:如果某项运营活动或产品更新后,沉默天数超过特定阈值的用户数量显著增加,可能说明该活动或更新并未达到预期效果,需要进一步优化。

怎么做:

二、流量多维分析

流量分析-session会话聚合信息表构建:

解释:根据业务需求,将用户的会话数据按照一定规则进行聚合,形成会话聚合信息表。

为什么这么做:通过构建会话聚合信息表,可以全面记录和分析这些互动行为,从而洞察用户的兴趣、偏好和行为模式。

怎么做:使用了collect_list函数收集所有符合条件的timestamp和url组合(仅当eventid为pageView时),

然后使用sort_array排序这些组合(只取第一个元素),

最后通过split函数分割字符串以获取URL部分

流量分析-cube(多维数据立方体)

解释:将原始数据加载到数据仓库中,并按照多维数据立方体模型进行转换和聚合

为什么做:多维数据立方体允许从多个维度对流量数据进行深入分析,如时间、地域、设备类型、用户属性等。

这种多维分析有助于发现隐藏在数据背后的规律和趋势。

怎么做:通过各种维度分组,然后进行group by分组,将不同维度分组的结果union all合并在一张表中

三、用户新增、留存指标分析

新增用户统计

解释:新增用户数量是衡量产品市场吸引力的直接指标

为什么这么做:跟踪新增用户数量可以揭示用户增长的趋势,这对于制定长期规划和预算至关重要

留存用户统计

解释:留存用户是那些继续使用产品并可能在未来产生更多价值的用户。留存率的高低直接反映了用户对产品的忠诚度和满意度。

为什么做:通过分析不同时间段或不同用户群体的留存率,可以识别出产品中的问题区域,

如用户流失的高发期、特定功能或版本的接受度低等,从而针对性地进行改进。

四、漏斗主题dws层表设计

解释:用于分析用户在完成某个目标(如购买商品、注册账号等)过程中,从起始步骤到最终完成步骤的转化情况。

为什么做:DWS层通常用于对DWD层的数据进行进一步的汇总和聚合,以支持更高效的查询和分析。

对于漏斗分析,这包括按步骤对用户行为进行分类和计数,计算每一步的转化率等。

怎么做:根据设备编号分组,将时间戳和事件名称拼接

将一个设备的多个行为存储到数组中,并且排序

将数组中元素按照:分隔符拼接成一个字符串

在ads层创建漏斗转化率表

解释:ADS层是数据仓库中最接近应用层的一层,它主要用于支持各种分析需求,包括报表生成、可视化展示等。

将漏斗转化率表放在ADS层,可以更方便地直接为各种应用提供数据支持。

为什么做:ADS层可以根据具体的应用需求,对DWS层的数据进行进一步的加工和优化,以适应特定的查询模式。

对于漏斗分析来说,这可能包括预计算某些关键指标、创建索引等,以提高查询性能。

怎么做:指标口径:转化率=当前步骤转化人数/上一步转化人数

总转化率=当前步骤转化人数/第一步转化人数

使用FIRST_VALUE函数获取每个漏斗的第一步的user_count,然后计算当前步骤的user_count与第一步user_count的百分比。

五、事件归因分析

首次触点归因

解释:待归因事件中,最早发生的事件,被认为是导致业务结果的唯一因素

指标口径【规则】

目标转化总次数 = 待归因事件出现次数 * 权重

贡献度 = 当前待归因事件转化总次数/所有待归因事件转化总次数

为什么做:首次触点通常是用户首次了解产品或品牌的渠道,它对于建立用户对品牌的初步认知和兴趣至关重要。

怎么做:按model_name(模型名称)、attribution_strategy(归因策略)、target_event(目标事件)、wait_attribution(等待归因期)进行分组。

计算每个分组内weight(权重)的总和,并将这个总和命名为x1

使用了窗口函数sum(x1) over(partition by model_name,attribution_strategy)来计算每个model_name和attribution_strategy分组内所有x1的总和。

计算x1(即每个分组内weight的总和)占其所属model_name和attribution_strategy分组内所有x1总和的百分比,作为contribution(贡献百分比)

相关推荐
processflow流程图41 分钟前
分布式kettle调度平台v6.4.0新功能介绍
分布式
在下不上天42 分钟前
Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复
大数据·开发语言·python
全栈开发圈1 小时前
干货分享|分布式数据科学工具 Xorbits 的使用
分布式
智慧化智能化数字化方案1 小时前
华为IPD流程管理体系L1至L5最佳实践-解读
大数据·华为
PersistJiao2 小时前
在 Spark RDD 中,sortBy 和 top 算子的各自适用场景
大数据·spark·top·sortby
2301_811274313 小时前
大数据基于Spring Boot的化妆品推荐系统的设计与实现
大数据·spring boot·后端
Yz98763 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
青云交3 小时前
大数据新视界 -- 大数据大厂之 Hive 数据导入:多源数据集成的策略与实战(上)(3/ 30)
大数据·数据清洗·电商数据·数据整合·hive 数据导入·多源数据·影视娱乐数据
lzhlizihang3 小时前
python如何使用spark操作hive
hive·python·spark
武子康3 小时前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs