用户行为路径分析报告_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
;

在这里插入图片描述

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(2)
blank

相关推荐

  • 安卓抓取直播源_港澳台rtmp直播源

    安卓抓取直播源_港澳台rtmp直播源很多时候你们在pc端看电视直播,都会出现直播源失效的情况,这样就可以用到电视直播源抓取工具箱,帮助你们自动抓取最新的直播源,让你们能够随时的观看自己喜欢的电视内容。软件简介:经常看到大家电视直播源群里找各种直播源,也会在欢社区的论坛找找到相关的直播源,由于直播源失效性很快,所以一般不能用的比能用得还多。与其这么麻烦不如自己麻烦点,虽然需求自己动手丰衣足食,但起码找到的都是有效的!从源代码里找直播源…

    2022年10月20日
  • python菜鸟踩坑系列-pika版本带来的问题

    python菜鸟踩坑系列-pika版本带来的问题

  • 【2022最新Java面试宝典】—— ElasticSearch面试题(31道含答案)

    【2022最新Java面试宝典】—— ElasticSearch面试题(31道含答案)目录1.elasticsearch了解多少,说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段。1.1设计阶段调优1.2写入调优1.3查询调优1.4其他调优2.elasticsearch的倒排索引是什么3.elasticsearch索引数据多了怎么办,如何调优,部署3.1动态索引层面3.2存储层面3.3部署层面4.elasticsearch是如何实现master选举的5.详细描述一下Elasticsearch索引文档的过程6.详细描述一下

  • 玩转电源设计,8个优选逆变电源参考方案大合辑

    玩转电源设计,8个优选逆变电源参考方案大合辑利用晶闸管电路把直流电转变成交流电,这种对应于整流的逆向过程,定义为逆变。例如:应用晶闸管的电力机车,当下坡时使直流电动机作为发电机制动运行,机车的位能转变成电能,反送到交流电网中去。又如运转着的直流电动机,要使它迅速制动,也可让电动机作发电机运行,把电动机的动能转变为电能,反送到电网中去。1、基于STM32单片机SPWM逆变电源设计功能描述:单片机采用:STM32单片机(型号:STM32F030F4P6)输出:正弦波频率:可调;幅值:可调;SPWM逆变原理:单片机SPWM驱动H桥+后级滤

  • java框架都有哪些_Java框架内容:常用的框架有哪些?[通俗易懂]

    java框架都有哪些_Java框架内容:常用的框架有哪些?[通俗易懂]对于学Java的人来说,学习和了解框架是必修的,但是Java的框架比较多,并不需要全部都学,只要学几个常用的框架,在工作的时候就差不多够用了。今天小编就来给大家介绍一下Java常用的框架有哪些?需要优先学习哪几个?Java的框架主要有:SpringMVC、Spring、Mybatis、Dubbo、Maven、RabbitMQ、Log4j、Ehcache、Redis、Shiro。不过这十个我们不需要…

  • 可以直接拿来用的常见Query代码片段

    可以直接拿来用的常见Query代码片段

发表回复

您的电子邮箱地址不会被公开。

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