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


相关推荐

  • 物联网平台架构设计

    物联网平台架构设计现在网上讨论的有关物联网的帖子非常之多,但大部分都是介绍理论或者有关硬件,通讯相关的问题,比如物联网模块,物联网通讯协议MQTT、XMPP、NB_IOT等,个人认为这些只是物联网中一部分,而涉及到物联网的设备如何管理,用户如何管理,数据包如何解析,大数据如何展示等也是物联网模块中非常重要的部分,所以作者就根据自身工作中总结出来的建构在云端的物联网平台基本架构分享给大家,并基于此架构如何一步一步来开发

    2022年5月9日
    37
  • IntelliJ IDEA 可以使用中文了「建议收藏」

    IntelliJ IDEA 可以使用中文了「建议收藏」1.前言今天IntelliJIdea2020.1正式发布了!最大的一个亮点莫过于开始支持中文了。相信很多英语不好的同学已经期盼已久了。但是感觉登录界面感觉变丑了!建议把文章看完再去升级。2.汉化体验先来看看我的效果,首先要告诉你这是官方汉化包,并不是第三方!我大致看了一圈,个别还没有汉化完毕,可能没有找到合适的描述词汇吧,但是绝大部分已经完成了。这下很多同学可以更方便使…

    2022年6月14日
    132
  • nested exception is java.lang.StackOverflowError解析

    背景介绍:项目是微服务的,使用docker容器,使用jenkins部署。测试环境有个公共服务一直以来都能正常发布,突然有一天不行了,经常发布失败,然后多发布几次就好了。报错如下:是栈溢出了,一般

    2022年2月16日
    74
  • leetcode-55跳跃游戏[通俗易懂]

    leetcode-55跳跃游戏[通俗易懂]给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标

    2022年8月9日
    7
  • php一键安装的环境包,php环境搭建的一键安装包有哪些?

    php一键安装的环境包,php环境搭建的一键安装包有哪些?php 环境搭建的一键安装包有 1 XAMPP 是一款功能强大的一键安装环境 2 PhpStudy 是支持 Win10 并且对于 PHP7 的支持也是不错 3 Appserv 是一款在 Windows 下的 PHP 一键安装环境 php 环境搭建的一键安装包有 1 XAMPPXAMPP 是一款功能强大的一键安装环境 它可以在 Windows Linux Solaris MacOSX 环境下进行安装对于 FTP 等常用操作也进

    2025年6月2日
    3
  • 如何更改linux文件的拥有者及用户组(chown和chgrp)[通俗易懂]

    如何更改linux文件的拥有者及用户组(chown和chgrp)[通俗易懂]本文整理自:http://blog.163.com/yanenshun@126/blog/static/128388169201203011157308/http://ydlmlh.iteye.com/blog/1435157一、基本知识在Linux中,创建一个文件时,该文件的拥有者都是创建该文件的用户。该文件用户可以修改该文件的拥有者及用户组,当然root用户可以修改任何文…

    2022年6月7日
    37

发表回复

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

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