用户行为路径分析报告_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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux安装pycharm(照着做就行)[通俗易懂]

    Linux安装pycharm(照着做就行)[通俗易懂]pycharm是Python语言的图形化开发工具。因为如果在Linux环境下的Pythonshell中直接进行编程,其无法保存与修改,在大型项目当中这是很不方便的而pycharm的安装,刚好就解决了这些问题。进入pycharm官网https://www.jetbrains.com/pycharm/download/#section=windows//复制到浏览器的搜索框打开这个网页是这样的在这里选择Linux的社区版,这是免费的,即community你会下载到pychar

    2022年10月19日
    1
  • 行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)[通俗易懂]

    行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)[通俗易懂]1.为什么要按列存储列式存储(Columnarorcolumn-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表:ØRow-basedstoragestoresatableinasequenceofrows.ØColumn-basedstoragestoresatablein…

    2022年7月14日
    27
  • php url安全性,allow_url_fopen潜在的安全性风险

    php url安全性,allow_url_fopen潜在的安全性风险PHP的动态功能同时也是潜在安全性风险的,它会从网路上的任何位置主动撷取、接收及处理资料。攻击者可能会试图传送恶意的资料和指令码,并欺骗您的服务器撷取恶意的指令码及执行它们。攻击者也可能会试图读取和写入您服务器上的档案,以控制网站并利用网站实现自己的目的。您可以设定PHP设定来加强PHP安装的安全性,并协助保护网站防止恶意攻击。Php.ini档案会指定PHP在您的网站上执行时所使用…

    2022年7月16日
    12
  • Java流对象:InputStream、OutputStream、Reader、Writer

    Java流对象:InputStream、OutputStream、Reader、Writer

    2022年3月12日
    48
  • 2021年总结:缘起性空,归来不少年——回顾这荆棘的一年

    2021年总结:缘起性空,归来不少年——回顾这荆棘的一年2021年已经离去,感谢大家的陪伴和帮助,感谢家人的鼓励。转眼,这已是我在CSDN写下的第九篇年终总结,真是岁月如梭。《缘起性空,归来不少年》。是啊,归来不再少年,我已经是而立之年了。当我写下这几个字的时候,心里还沉甸甸的。曾经的我总以为,博士毕业继续回到贵州教书,陪伴家人,仍是少年,真的如此吗?或许现实将更加残忍,岁月将不饶人,这荆棘一年让我意识到,我已为人父,不再少年。

    2022年4月30日
    53
  • idea激活码2021【2021.10最新】

    (idea激活码2021)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsaWNlbnNlSWQi…

    2022年3月27日
    142

发表回复

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

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