数仓经典案例-各个视频平均完播率平均播放进度
Posted 一只考考拉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数仓经典案例-各个视频平均完播率平均播放进度相关的知识,希望对你有一定的参考价值。
问题1:计算2021年里有播放记录的每个视频的完播率(结果保留三位小数),并按完播率降序排序
注:视频完播率是指完成播放次数占总播放次数的比例。简单起见,结束观看时间与开始播放时间的差>=视频时长时,视为完成播放。
DROP TABLE IF EXISTS tb_user_video_log, tb_video_info;
CREATE TABLE tb_user_video_log (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid INT NOT NULL COMMENT '用户ID',
video_id INT NOT NULL COMMENT '视频ID',
start_time datetime COMMENT '开始观看时间',
end_time datetime COMMENT '结束观看时间',
if_follow TINYINT COMMENT '是否关注',
if_like TINYINT COMMENT '是否点赞',
if_retweet TINYINT COMMENT '是否转发',
comment_id INT COMMENT '评论ID'
) CHARACTER SET utf8 COLLATE utf8_bin;
CREATE TABLE tb_video_info (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
video_id INT UNIQUE NOT NULL COMMENT '视频ID',
author INT NOT NULL COMMENT '创作者ID',
tag VARCHAR(16) NOT NULL COMMENT '类别标签',
duration INT NOT NULL COMMENT '视频时长(秒数)',
release_time datetime NOT NULL COMMENT '发布时间'
)CHARACTER SET utf8 COLLATE utf8_bin;
INSERT INTO tb_user_video_log(uid, video_id, start_time, end_time, if_follow, if_like, if_retweet, comment_id) VALUES
(101, 2001, '2021-10-01 10:00:00', '2021-10-01 10:00:30', 0, 1, 1, null),
(102, 2001, '2021-10-01 10:00:00', '2021-10-01 10:00:24', 0, 0, 1, null),
(103, 2001, '2021-10-01 11:00:00', '2021-10-01 11:00:34', 0, 1, 0, 1732526),
(101, 2002, '2021-09-01 10:00:00', '2021-09-01 10:00:42', 1, 0, 1, null),
(102, 2002, '2021-10-01 11:00:00', '2021-10-01 11:00:30', 1, 0, 1, null);
INSERT INTO tb_video_info(video_id, author, tag, duration, release_time) VALUES
(2001, 901, '影视', 30, '2021-01-01 7:00:00'),
(2002, 901, '美食', 60, '2021-01-01 7:00:00'),
(2003, 902, '旅游', 90, '2021-01-01 7:00:00');
答案:
select a.video_id,round(sum(if(end_time-start_time>=duration,1,0))/count(start_time),3) as avg_comp_play_rate
from tb_user_video_log a left join tb_video_info b on a.video_id=b.video_id
where year(start_time)=2021
group by a.video_id
order by avg_comp_play_rate desc
问题2:计算各类视频的平均播放进度,将进度大于60%的类别输出。
注:
播放进度=播放时长÷视频时长*100%,当播放时长大于视频时长时,播放进度均记为100%。
结果保留两位小数,并按播放进度倒序排序。
SELECT tag,
concat(round(avg(case
WHEN timestampdiff(second,start_time,end_time) >= duration THEN
1
ELSE (timestampdiff(second,start_time,end_time)/duration) end)*100,2),'%') AS avg_play_progress
FROM tb_user_video_log a
LEFT JOIN tb_video_info b
ON a.video_id=b.video_id
GROUP BY tag
HAVING substring_index(avg_play_progress,'%',1) > 60
ORDER BY avg_play_progress DESC
问题3:统计在有用户互动的最近一个月(按包含当天在内的近30天算,比如10月31日的近30天为10.2~10.31之间的数据)中,每类视频的转发量和转发率(保留3位小数)。
注:转发率=转发量÷播放量。结果按转发率降序排序。
SELECT tag,
sum(if_retweet) AS retweet_cut,
round(sum(if_retweet)/count(*),
3) AS retweet_rate
FROM tb_user_video_log a
LEFT JOIN tb_video_info b
ON a.video_id=b.video_id
WHERE datediff(date(
(SELECT max(start_time)
FROM tb_user_video_log)),date(start_time))<=29
GROUP BY tag
问题4:计算2021年里每个创作者每月的涨粉率及截止当月的总粉丝量
注:
涨粉率=(加粉量 - 掉粉量) / 播放量。结果按创作者ID、总粉丝量升序排序。
if_follow-是否关注为1表示用户观看视频中关注了视频创作者,为0表示此次互动前后关注状态未发生变化,为2表示本次观看过程中取消了关注。
SELECT author,
date_format(start_time,'%Y-%m') AS month ,
round(sum(case WHEN if_follow=2 THEN -1 ELSE if_follow end)/count(author),3) AS fans_growth_rate ,
sum(sum(case WHEN if_follow=2 THEN -1 ELSE if_follow end))over(partition by author ORDER BY date_format(start_time,'%Y-%m')) total_fans
FROM tb_user_video_log a
LEFT JOIN tb_video_info b
ON a.video_id=b.video_id
WHERE year(start_time)=2021
GROUP BY author,month
ORDER BY author,total_fans
*问题5:统计2021年国庆头3天每类视频
每天的近一周总点赞量和一周内最大单天转发量
,结果按视频类别降序、日期升序排序。假设数据库中数据足够多,至少每个类别下国庆头3天及之前一周的每天都有播放记录。*
SELECT *
FROM
(SELECT tag,
dt,
sum(like_cnt)
OVER w AS sum_like_cnt_7d, max(retweet_cnt)
OVER w AS max_retweet_cnt_7d
FROM
(SELECT tag,
date(start_time) dt,
sum(if_like) like_cnt,
sum(if_retweet) retweet_cnt
FROM tb_user_video_log a
LEFT JOIN tb_video_info b
ON a.video_id=b.video_id
GROUP BY 1,2)t1
#窗口函数 窗口范围:当前行和后六行
WINDOW w AS (partition by tag ORDER BY dt DESC rows BETWEEN current row
AND 6 following)) t2
GROUP BY 1,2
HAVING dt
BETWEEN '2021-10-01'
AND '2021-10-03'
ORDER BY 1 desc, 2 asc
问题6:找出近一个月发布的视频中热度最高的top3视频。
注:
热度=(a视频完播率+b点赞数+c评论数+d转发数)*新鲜度;
新鲜度=1/(最近无播放天数+1);
当前配置的参数a,b,c,d分别为100、5、3、2。
最近播放日期以end_time-结束观看时间为准,假设为T,则最近一个月按[T-29, T]闭区间统计。
结果中热度保留为整数,并按热度降序排序。
select
video_id,
round((100*avg_comp_play_rate+5*like_cnt+3*comment_cnt+2*retweet_cnt)*(1/(unfinished_day_cnt+1))) hot_index
from(
select video_id,
sum(case when timestampdiff(second,start_time,end_time)>=duration then 1 else 0 end)/count(start_time) as avg_comp_play_rate,
sum(if_like) like_cnt,
sum(if_retweet) retweet_cnt,
sum(if(comment_id is not null,1,0)) comment_cnt,
datediff(date((select max(end_time) from tb_user_video_log)),max(date(end_time))) unfinished_day_cnt
from tb_video_info a join tb_user_video_log b using(video_id)
where datediff(date((select max(end_time) from tb_user_video_log)),date(release_time))<=29
group by 1
) t1 group by 1 order by hot_index desc
limit 3
短视频运营抖音推送机制 | 账号 “ 完播率 “ 数据
文章目录
一、抖音推送机制
抖音推送机制 :
初始分发阶段 : 每个新账号都会自动分配 1 1 1 万的 初始分发 流量 , 大约 200 200 200 ~ 500 500 500 左右的播放量 ;
多级推荐阶段 : 平台根据用户的行为 , 对账号打 " 创作者标签 “ , 开始进行 ” 多级推荐 " , 向特定用户精准推送小视频 , 如音乐领域的 , 然后在根据推送的这批用户的行为 , 再次打标签 , 反复多级进行该操作 ;
垂直账号 : 账号的所有内容 , 都是围绕一个领域 , 比如乐器演奏 , 这样 系统会很容易为 创作者 打标签 , 特定精准领域的用户越容易发现你的账号 , 进而转为粉丝 ; 如 : 智能电子乐器 相关的 垂直账号 , 需要的特定用户是 音乐爱好者群体 ;
流量池 : 第一阶段 流量池 获得好的数据 , 系统才会将 作品 向下一级 流量池推荐 ;
二、账号 " 完播率 " 数据
完播率 :
完播率本质是 用户在视频上的 停留时长 ;
如果用户 一直播放 该账号下的视频 , 或者 反复播放某一个视频 , 完播率会很高 ;
完播率 不只是 将视频播放完毕 , 如果 视频很短如几秒 , 很快就播放完毕 , 实际上 完播率 这项数据并不高 ;
提高 " 完播率 " 的技巧 :
① 黄金三秒 : 视频的开始 3 3 3 秒很重要 , 开始的几秒钟如果不够精彩 , 用户会立刻刷走该视频 ; 可以将视频中最精彩的几秒剪辑在视频前面 , 然后再展开整个视频内容 ;
② 选好标题 : 选择有诱惑力的标题 , 利用人们的 好奇 , 八卦 , 恶搞 , 疑问 , 痛点 等心态 , 建议积累一些标题公式 ; 如 : " 千万不要… " ( 好奇 ) , " 80%的人都不知道… " ( 好奇 ) , " 一条视频教会你… " , " 为什么 … " ( 疑问 ) , " 小秘密: … 千万要保密 " ( 八卦 ) , " 你为什么 … " ( 痛点 ) ;
③ 重要资料一闪而过 : 比如下载某个重要资料 , 微信公众号二维码等 重要信息 , 一闪而过 , 引导着用户反复观看该视频 , 想要在指定的时间点暂停 , 抓取该截图资料 ; 用户反复播放 , 就会停留更多时间 ; ( 不建议经常使用 )
④ 引导完播下载 : 增加 " 引导下载 " 类的话术 , 比如 : 视频敏感 , 有可能随时会被下架 , 建议下载保存 之类的 ;
⑤ 起承转合 : 设置好 视频 内容的 起承转合 , 注意视频的 节奏 , 起 ( 提出问题 ) , 承 ( 描述问题重要性 ) , 转 ( 提出解决方案 ) , 合 ( 留下悬念 ) ; 控制好视频中的这 4 4 4 部分的时长 ;
以上是关于数仓经典案例-各个视频平均完播率平均播放进度的主要内容,如果未能解决你的问题,请参考以下文章
微信小程序(原生)——video视频禁止拖动进度条可全屏观看等视频播放结束事件数据监听显示播放时长固定倍速视频去除黑边等