用户行为路径分析报告_spark用户行为分析

用户行为路径分析报告_spark用户行为分析请看题:已知用户行为表tracking_log,大概字段有:(user_id用户编号,op_id操作编号,op_time操作时间)要求:统计每天符合以下条件的用户数:A操作之后是B操作,AB操作必须相邻。生成数据,可以在sqlfiddle中测试:createtabletracking_log(idintprimarykeyAUTO_INCREMENT,user_idintnotnull,op_idchar(4)notnull,op

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

请看题:

已知用户行为 tracking_log, 大概字段有:
(user_id 用户编号, op_id 操作编号, op_time 操作时间)

要求:统计每天符合以下条件的用户数:A操作之后是B操作,AB操作必须相邻。


生成数据,可以在 sqlfiddle 中测试:

create table tracking_log(
  id int primary key AUTO_INCREMENT,
  user_id int not null,
  op_id char(4) not null,
  op_time datetime not null
  );
  
insert into tracking_log(user_id, op_id, op_time) values 

(1, 'A', '2020-1-1 12:01:03'),
(2, 'A', '2020-1-1 12:01:04'),
(3, 'A', '2020-1-1 12:01:05'),
(1, 'B', '2020-1-1 12:03:03'),
(1, 'A', '2020-1-1 12:04:03'),
(1, 'C', '2020-1-1 12:06:03'),
(2, 'A', '2020-1-1 12:07:04'),
(3, 'B', '2020-1-1 12:08:05'),
(2, 'C', '2020-1-1 12:09:03'),
(2, 'A', '2020-1-1 12:10:03'),

(1, 'A', '2020-1-2 12:01:03'),
(2, 'A', '2020-1-2 12:01:04'),
(3, 'A', '2020-1-2 12:01:05'),
(1, 'B', '2020-1-2 12:03:03'),
(1, 'A', '2020-1-2 12:04:03'),
(1, 'C', '2020-1-2 12:06:03'),
(2, 'A', '2020-1-2 12:07:04'),
(3, 'B', '2020-1-2 12:08:05'),
(2, 'C', '2020-1-2 12:09:03'),
(2, 'A', '2020-1-2 12:10:03');

首先,每日每个用户的行为可以视为一个序列,自然想到用 group_concat 把每个人的所有行为拼接成一个字符串:

select convert(op_time, date) as date, user_id, group_concat(op_id order by op_time) as track
from tracking_log
group by convert(op_time, date), user_id
order by date, user_id
;

在这里插入图片描述
需要注意 group_concat 里要用到 order by,否则顺序不能保证一致!!

接下来就简单了吧,直接用字符查找就可以找到关心的行为模式:

select convert(op_time, date) as date, user_id, group_concat(op_id order by op_time) as track
from  tracking_log
group by convert(op_time, date), user_id
having group_concat(op_id order by op_time) like '%A,B%'
order by date, user_id
;

在这里插入图片描述
然后在这个表的基础上计数就完啦:

select t.date, count(*) as num from
(
  select convert(op_time, date) as date, user_id
  from  tracking_log
  group by convert(op_time, date), user_id
  having group_concat(op_id order by op_time) like '%A,B%'
) t
group by t.date
;

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172660.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • x201换风扇_笔记本怎么换风扇 ThinkPad X201i换风扇图文教程

    x201换风扇_笔记本怎么换风扇 ThinkPad X201i换风扇图文教程ThinkPadX201i换电扇图文教程:拆机之前,我们需求先对X201i的散热电扇在停止了开端的理解,得知价钱从10元左右的单电扇,到上百的散热全体都有,而且还分东芝产和松下产等不同产地的,小编选择了松下产的整套散热(包括散热片和电扇),价钱为150,电扇固定办法为小螺丝。假定拿到电脑修理店去换的话,小编猜测我们所需求的费用至少在200-300元之间。一:拆机前的准备螺丝刀,小毛刷和安排螺丝的…

    2022年6月27日
    50
  • CAS单点登录-简介(一)「建议收藏」

    CAS单点登录-简介(一)「建议收藏」CAS单点登录-简介(一)CAS-5.1.3什么是CAS?什么是单点登录?带大家一起搭建sso、cas-management、springbootadmin、springcloudconfig

    2022年6月7日
    53
  • stringbuild和stringbuffer的区别_string和stringbuilder的区别

    stringbuild和stringbuffer的区别_string和stringbuilder的区别JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供的字符串进行修改.当你知道字符数据要改变的时候你就可以使用 StringBuffer.典型地,你可以使用 StringBuffers来动态构造字符数据.一、String的使用方法:

    2022年9月21日
    4
  • GitHub Universe 2020 强势登陆,GitCode 直播已上线

    GitHub Universe 2020 强势登陆,GitCode 直播已上线什么是GitHubUniverse?GitHubUniverse是GitHub的年度选框产品和社区活动,聚集了构建全球最重要技术的GitHub产品专家,软件领导者和企业团队。GitHub的全球互联社区有机会聚在一起,分享最佳实践,互相学习,并了解GitHub的最新产品和功能。谁应该参加GitHubUniverse?开发人员:会议议题专为运行各种规模项目的开源贡献者和维护者以及希望了解最新软件工具,技术和最佳实践的开发人员而设计。通过深入研究Codespaces,Kubernetes部署

    2022年7月16日
    20
  • matlab多重比较lsd法,多重比较法-LSD I 附赠统计学最全思维导图~[通俗易懂]

    matlab多重比较lsd法,多重比较法-LSD I 附赠统计学最全思维导图~[通俗易懂]原标题:多重比较法-LSDI附赠统计学最全思维导图~文末附赠统计学最全干货导图~前面我们讲了方差分析,方差分析主要是用于多组均值比较的,方差分析的结果是多组均值之间是否有显著性差异,但是这个显著性差异是整体的显著性差异,可是我们并不知道具体是哪些组之间有显著性差异。所以就有了我们今天的多重比较,目的就是为了获取具体哪些组之间有显著差异。多重比较法方法有很多种,这篇主要介绍一下比较常用的一种LS…

    2022年6月5日
    28
  • Idea快捷键大全_零之轨迹超详细攻略

    Idea快捷键大全_零之轨迹超详细攻略4.1、字体设置file–>settings–>输入font–>设置字体样式以及字号大小。4.2、快速生成main方法psvm、main4.3、快速生成System.out.println()sout4.4、注意:IDEA是自动保存,不需要ctrl+s4.5、删除一行ctrl+y4.6、怎么运行:代码上右键–>run或者点击左侧的绿色箭头。ctrl+shift+F104.7、左侧窗口中的列表怎么展开?怎么关闭?左箭头关闭。

    2022年9月28日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号