数仓建设实践——用户留存分析专题模型设计

一、什么是留存分析

  留存分析,就是分析用户随时间变化的活跃情况。获取用户只是第一步,留住用户才是所有产品最终目标。可以理解为:由初期的摇摆用户转化成忠诚&稳定用户的过程。留存率越高,说明用户对产品越有强烈的依赖感。大体上可以分为三个阶段:

初期:新用户刚注册,用户留存下降较快,需快速让用户感受到产品核心价值。

中期:新用户沉淀下来,形成活跃用户,此时需要分析活跃留存,加强核心功能,培养用户对产品的使用习惯。

后期:思考产品核心价值,做好产品迭代与优化。

留存分析专题数据模型包含哪些/如何划分?

(1)从用户维度划分; 

(2)常见的有:新用户留存、老用户留存;

(3)从时间维度划分;

(4)第N日留存:指的是活跃用户在第N日依然登录的用户占活跃用户的比例;

(5)N日留存:指的是用户在N日内依然登录的用户占活跃用户的比例;

ps:一般我们说的N日留存都是指第N日留存;

(6)常见的时间周期有:次日留存、3日留存、7日留存、30日留存、周留存、月留存

二、模型方案设计

   简化分析场景,不考虑用户分组的情况。比如有以下用户访问表(dws_uuid_visit_1d)汇总数据,计算第N日留存,在此我们对留存分析通过3版本建设,对比出最实用场景。

2.1 留存分析1.0

select
   t2.ds ,
   count(distinct t1.uuid  ) as nd_retention_uv
from dws_uuid_visit_1d t1
left join dws_uuid_visit_1d t2
on t1.uuid = t2.uuid
and t2.ds = '{统计日}'
and t1.ds = date_add( t2.ds,'{留存N天}')
group by t2.ds

缺陷:

  • 性能极差,每次计算都要关联历史N天的用户访问数据
  • 代码质量&稳定性差,统计留存天数变化,代码也要发生相对应的关联调整;

2.2 留存分析2.0

   基于以上分析的缺点,代码可以有些改进的空间,比如关联统计,留存分析周期一般不会拉的太长,基本到90天就足够分析了。

select
   t2.ds as start_date ,
   t1.ds as follow_date ,
   datediff( t1.ds, t2.ds) as nd,
   count(distinct t1.uuid  ) as nd_retention_uv
from dws_uuid_visit_1d t1
left join dws_uuid_visit_1d t2
on t1.uuid = t2.uuid
and t2.ds = '{统计日}'
and t1.ds > t2.ds
and  t1.ds <= date_add( t2.ds,90)
group by 
   t2.ds,
   t1.ds

缺点:

  此方案虽然解决了代码的稳定性方面,但是性能问题反而放大了。

2.3 留存分析3.0

  主要思考如何解决性能问题,固化分析思路参考2.0,比如固化90天的留存,解决性能问题,这个思路主要借鉴离线同步方案每天做增量merge。

  初始化一个90位的bit字符串,每位表示用户在当天访问pv,只有在初始化的时候需要扫描90天的数据,初始化工作只需要做一次,后续每天增量进行merge操作即可

(1)初始化90天的用户数据

-- 代码中的nd_init是自定义的udf函数
select
  uuid,
  nd_init(
    sort_aray(collect_list(concat(ds,'|',pv))),
    date_sub('初始化日期',90),
    '初始化日期'
    ) as view_pv_90d
from dws_uuid_visit_1d t1
where ds >= date_sub('初始化日期',90)
and ds <= '初始化日期'
group by uuid

  自定义udf (nd_init)的主要功能就是初始化构建等长的bit字符串,这样做的目的是为了方便后续的merge以及留存计算,UDF代码如下:

(2)每天增量数据合并,后续的留存分析都是基于此 nd 模型进行相应的计算即可

(3)自定义udaf (nd_merge)的主要功能就是merge等长的bit字符串

代码如下:

三、总结

 模型设计是不断思考的过程,从思考中不断优化找到最优解,此外也可以借助一些olap 引擎做通用的用户留存分析,比如Doris 、StarRocks 等。其聚合模型中支持了Bitmap,可以直接用自带的 udaf函数来分析,可以将dws_uuid_visit_1d 同步到Doris的聚合模型。

四、bitmap_union精确去重

  StarRocks中可以借助bitmap_union函数进行去重

   以下示例基于一张广告业务相关的明细表 advertiser_view_record,其中记录了点击日期 click_time、广告代码 advertiser、点击渠道 channel 以及点击用户 ID user_id

CREATE TABLE advertiser_view_record(
    click_time DATE,
    advertiser VARCHAR(10),
    channel VARCHAR(10),
    user_id INT) distributed BY hash(click_time);

该场景需要频繁使用如下语句查询点击广告的UV。

SELECT  advertiser,
        channel,
        count(distinct user_id)FROM advertiser_view_record
GROUP BY advertiser, channel;

   如需实现精确去重查询加速,可以基于该明细表创建一张物化视图,并使用bitmap_union()函数预先聚合数据。 

CREATE MATERIALIZED VIEW advertiser_uv AS 
SELECT advertiser, 
       channel, 
       bitmap_union(to_bitmap(user_id))
FROM advertiser_view_record
GROUP BY advertiser, channel;

   物化视图创建完成后,后续查询语句中的子查询 count(distinct user_id) 会被自动改写为 bitmap_union_count(to_bitmap(user_id)) 以便查询命中物化视图。

 ps:字段user_id 需要是Int或者bigint类型

【用户留存分析的优化方式】面试考察了N多次

参考文章:

StarRocks最佳实践经验_starrocks索引-CSDN博客

知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于Hadoop的电商用户行为大数据分析数仓建设,是指利用Hadoop技术构建一个存储和分析电商用户行为数据的数据仓库。 首先,Hadoop是一个分布式计算框架,它可以处理大量的数据并提供并行化的计算能力,适用于存储和分析大规模的数据集。因此,选择基于Hadoop来搭建电商用户行为大数据分析数仓是非常恰当的。 在这个数仓中,我们可以收集和存储来自电商网站的各种用户行为数据,例如浏览商品、购买商品、评论商品等。这些数据可以通过Hadoop的分布式文件系统(HDFS)进行存储,并通过Hadoop的分布式计算能力进行处理和分析。 为了建设这个数仓,首先需要在Hadoop上部署适用于大数据存储和计算的软件,例如Hadoop的分布式文件系统HDFS和分布式计算框架MapReduce。然后,需要建立相应的数据采集系统,将来自电商网站的用户行为数据存储到HDFS中。 接下来,可以使用Hadoop生态系统中的其他组件进行数据清洗、数据挖掘和数据分析。例如,可以使用Hadoop的批处理框架MapReduce进行数据清洗和转换,使用Hadoop的分布式数据库HBase进行数据存储和查询,使用Hadoop的数据仓库工具Hive进行数据分析和查询。 通过对这个数仓中的大数据进行分析,可以发现用户的行为模式和偏好,并进一步进行个性化推荐、精准营销和用户画像等工作。同时,可以通过对用户行为数据的分析,优化电商网站的运营和服务策略,提升用户体验和增加销售额。 总之,基于Hadoop的电商用户行为大数据分析数仓建设,可以帮助电商企业更好地理解用户需求和行为,提供更加个性化和精准的服务,促进业务增长和竞争优势的提升。 ### 回答2: 基于Hadoop的电商用户行为大数据分析数仓建设主要包括以下几个方面的内容。 首先,我们需要建立一个完整的数据收集和存储系统。通过使用Hadoop分布式存储和处理框架,可以快速地处理大量的数据。我们可以将用户行为数据从各个不同的数据源收集到一个数据湖中,然后使用Hadoop将其分散存储在多个节点上,以确保数据的高可靠性和高可用性。 其次,我们需要建立一个数据清洗和转换的流程。由于电商用户行为数据具有很高的复杂性和维度,为了更好地进行分析,我们需要对数据进行清洗和转换。通过使用Hadoop的数据处理和ETL工具,我们可以对数据进行清洗、去重、格式转换等操作,使其更符合分析的需求。 然后,我们需要进行数据建模和指标定义。通过对用户行为数据进行建模,我们可以将用户行为关联起来,形成用户画像和用户行为路径等指标,从而更好地了解用户的购买行为和偏好。同时,我们还可以定义一些关键指标,如转化率、留存率和复购率等,来衡量电商平台的运营效果。 最后,我们可以使用Hadoop的分析工具进行数据分析和挖掘。通过使用Hadoop分布式计算框架,我们可以对大规模的用户行为数据进行深入的分析和挖掘。我们可以使用机器学习和数据挖掘算法来进行用户行为预测和推荐,以提高电商平台的用户体验和销售额。 总之,基于Hadoop的电商用户行为大数据分析数仓建设可以帮助电商平台更好地了解和分析用户行为,为电商平台的运营决策提供数据支持,并通过数据分析和挖掘来提升用户体验和销售额。 ### 回答3: 基于Hadoop的电商用户行为大数据分析数仓建设是指利用Hadoop技术构建一个存储和处理大规模用户行为数据的系统。此系统主要用于电子商务业务部门对用户行为数据进行分析,以从中挖掘商业价值。 第一步是数据收集。电商平台需要收集多种类型的用户行为数据,包括用户浏览商品、下单、支付、评价等各个环节的数据。这些数据通常以结构化或半结构化的形式存储在关系数据库中。 第二步是数据存储和预处理。电子商务平台将原始数据导入到Hadoop分布式文件系统(HDFS)中,并使用Hive等查询引擎对数据进行预处理和清洗。预处理包括数据清洗、格式转换、字段抽取等操作,以确保数据的准确性和一致性。 第三步是数据分析和挖掘。使用Hadoop的MapReduce编程模型、Spark等分布式计算框架,对预处理后的数据进行复杂的数据分析和挖掘,包括用户行为模式分析用户画像构建、个性化推荐、销售预测等。通过这些分析和挖掘,电子商务平台可以更好地了解用户需求、改进产品和服务,提高销售和用户满意度。 第四步是数据可视化和报告。利用数据可视化工具如Tableau、Power BI等,将分析结果以直观的图表形式展示给电商业务部门,并生成报告。这些报告可以帮助业务部门更好地了解用户行为趋势和特点,以及洞察潜在的商业机会。 基于Hadoop的电商用户行为大数据分析数仓建设可以帮助电子商务平台更好地理解和洞察用户行为,提供更精准的个性化推荐和服务,促进销售增长,提升用户满意度,为企业创造更大的商业价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值