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(贡献百分比)

相关推荐
月夜星辉雪1 小时前
【RabbitMQ 项目】服务端:路由交换模块
分布式·rabbitmq
super_journey1 小时前
RabbitMq中交换机(Exchange)、队列(Queue)和路由键(Routing Key)
分布式·中间件·rabbitmq
howard20051 小时前
大数据时代:历史、发展与未来
大数据
翔云API1 小时前
人证合一接口:智能化身份认证的最佳选择
大数据·开发语言·node.js·ocr·php
知识分享小能手1 小时前
mysql学习教程,从入门到精通,SQL 删除数据(DELETE 语句)(19)
大数据·开发语言·数据库·sql·学习·mysql·数据开发
学习使我快乐——玉祥2 小时前
es查询语法
大数据·elasticsearch·搜索引擎
灰色孤星A2 小时前
分布式事务学习笔记(二)Seata架构、TC服务器部署、微服务集成Seata
分布式·微服务·架构·seata·分布式事务·tc服务器·微服务集成seata
哈尔滨财富通科技3 小时前
财富通公司开发维修售后小程序,解决售后维修问题
大数据·小程序·云计算·售后小程序·哈尔滨小程序
@月落3 小时前
alibaba获得店铺的所有商品 API接口
java·大数据·数据库·人工智能·学习
MinIO官方账号4 小时前
从 HDFS 迁移到 MinIO 企业对象存储
人工智能·分布式·postgresql·架构·开源