首页 > 其他分享 >数据分析原来还可以这么搞?

数据分析原来还可以这么搞?

时间:2023-01-11 17:06:38浏览次数:52  
标签:数据分析 这么 pv created -% publish time 原来 zhihu

前言

目前“知乎”的用户群体非常广泛,很多机构、商家、个人都会使用“知乎”进行推广宣传。当我们想对知乎账号的内容进行分析时,知乎平台所提供的内容分析功能却不能满足更多个性化的分析需求,例如:

1、仅支持单账号的数据分析,不支持多账号数据横向对比。

2、数据分析维度太少,且无法支持分析维度的个性化设置和拓展。

针对于以上存在的问题,经过不断的探索,我找到了一种解决方案:开源项目"知乎数据分析小助手" + 开源数据可视化分析工具 DataEase。

本方案利用"知乎数据分析小助手"进行数据获取,使用 DataEase 进行数据分析,通过两者的结合最终实现对多个知乎账号的多维度内容分析。

一、数据分析成果展示

数据分析原来还可以这么搞?_数据集

二、环境准备

1、部署 DataEase

此部分可以参考 DataEase 官方文档进行操作,我使用的是 Linux 单机离线部署。

附部署教程地址:​​离线安装 - DataEase 文档​

2、"知乎数据分析小助手"数据配置

(1)创建数据库

基于 DataEase 的数据库进行创建,若使用 DataEase 的默认mysql镜像,可参考以下步骤:

# 进入mysql容器
docker exec -it mysql mysql -u root -p
# 输入密码
Password123@mysql
# 创建数据库
create database demo
# 查看数据库
show databases;
# 退出

若DataEase使用的是外部数据库地址,可在外部数据库中执行以下建库命令:

# 创建数据库
create database demo
# 查看数据库
show databases;

(2)配置知乎账号信息

# 进入DataEase的配置文件目录
cd /opt/dataease/conf
# 创建新的配置文件 demo.properties,具体配置可参考开源项目说明(附项目地址)
vim demo.properties

“知乎数据分析小助手”项目地址:


3、部署开源项目“知乎数据分析小助手”,有 Docker 镜像部署和 JAR 包部署两种部署方式(建议采用镜像部署)

(1)Docker 镜像部署(​​点击此处下载镜像压缩包​​),下载后按以下步骤进行操作

# 将压缩包传至服务器的 /opt 目录下,解压压缩包
unzip zhihu-data-analysis.zip
# 为脚本赋权
chmod 777 installer.sh
# 执行部署脚本 install.sh(执行脚本之前请确保 DataEase 已部署完成,且 DataEase 部署目录为默认的 /opt/dataease 目录,且配置文件demo.properties已配置完成)
./installer.sh

数据分析原来还可以这么搞?_知乎_02

(2)JAR 包部署(​​点击此处下载JAR 包​​),JAR 包部署需要自行安装 JDK 环境(具体如何安装配置 JDK 可自行百度),配置好JDK环境变量后,执行命令启动程序

nohup java -jar demo-v1.0.jar &

(注:也可自己下载项目源码进行打包部署)

三、获取并存储知乎账号的数据

1、定时同步,默认每天零点触发执行,可修改cron表达式进行配置

数据分析原来还可以这么搞?_知乎_03

2、接口调用

全量同步请求接口地址:http://IP地址:8099/test/sync/zhiHu

数据分析原来还可以这么搞?_数据可视化_04

单用户同步请求接口地址:http://IP地址:8099/test/sync/zhiHu/用户名

数据分析原来还可以这么搞?_知乎_05

四、使用 DataEase 对数据进行分析

1、添加数据源

数据分析原来还可以这么搞?_数据集_06

2、添加数据集(以下sql数据集仅作参考,可视个人情况进行修改)

(1)添加文章、回答两个数据表的数据库数据集

数据分析原来还可以这么搞?_DataEase_07

数据分析原来还可以这么搞?_数据可视化_08

(2)添加“今日文章阅读量增长数” SQL数据集

select t.title,sum(t.curPv) growthPv,t.user,t.created_time,t.publish_time from (
select answer1.pv-answer2.pv as curPv,answer1.title,answer1.user,answer1.`created_time`,answer1.publish_time from t_zhihu_answer answer1
JOIN t_zhihu_answer answer2 on DATE_FORMAT(answer2.`created_time`,"%Y-%m-%d") = DATE_SUB(DATE_FORMAT(answer1.`created_time`,"%Y-%m-%d"),INTERVAL 1 DAY)
and answer1.title = answer2.title
and answer1.user = answer2.user
UNION
select article1.pv-article2.pv as curPv,article1.title,article1.user,article1.`created_time`,article1.publish_time from t_zhihu_article article1
JOIN t_zhihu_article article2 on DATE_FORMAT(article2.`created_time`,"%Y-%m-%d") = DATE_SUB(DATE_FORMAT(article1.`created_time`,"%Y-%m-%d"),INTERVAL 1 DAY)
and article1.title = article2.title
and article1.user = article2.user
) t
WHERE t.publish_time>'2022' and DATE_FORMAT(t.`created_time`,"%Y-%m-%d" )= CURDATE()
GROUP BY t.title

(3)添加“每日阅读总量数据” SQL数据集

select sum(t.sumpv) as sumpv, t.date from 
(
select sum(pv) as sumpv,DATE_FORMAT( `created_time`, "%Y-%m-%d" ) as date from t_zhihu_answer WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" )
UNION
select sum(pv) as sumpv,DATE_FORMAT( `created_time`, "%Y-%m-%d" ) as date from t_zhihu_article WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" )
) t
GROUP BY t.date

(4)添加“文章回答汇总” SQL数据集

select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'回答' as type,`user` from t_zhihu_answer
where publish_time>'2022'
UNION
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'文章' as type,`user` from t_zhihu_article
where publish_time>'2022'
ORDER BY pv desc

(5)添加“文章回答占比” SQL数据集

select sum(IF(t.type='回答',0,t.pv)) as '回答',sum(t.pv) sumPv,'回答' as type from 
(
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'回答' as type from t_zhihu_answer WHERE publish_time>'2022'
UNION
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'文章' as type from t_zhihu_article WHERE publish_time>'2022'
) t
UNION
select sum(IF(t.type='文章',0,t.pv)) as '文章',sum(t.pv) sumPv,'文章' as type from
(
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'回答' as type from t_zhihu_answer WHERE publish_time>'2022'
UNION
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'文章' as type from t_zhihu_article WHERE publish_time>'2022'
) t

(6)添加“账号回答文章阅读数” SQL数据集

select sum(pv) as sumpv,`created_time`, `user`,'回答' as type from t_zhihu_answer WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" ),`user`
UNION
select sum(pv) as sumpv,`created_time`, `user`,'文章' as type from t_zhihu_article WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" ),`user`

(7)添加“账号每日阅读增量” SQL数据集

select tt.* from (
select SUM(t.sumpv) as addPvOneDay,t.date,t.`user` from (
select sum(pv) as sumpv,DATE_FORMAT( `created_time`, "%Y-%m-%d" ) as date, `user` from t_zhihu_answer WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" ),`user`
UNION
select -sum(pv) as sumpv,DATE_FORMAT(DATE_ADD(`created_time`,INTERVAL 1 DAY), "%Y-%m-%d") as date, `user` from t_zhihu_answer WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" ),`user`
) t
GROUP BY t.date,t.`user`
) tt WHERE tt.addPvOneDay>=0 and tt.date!='2022-09-26' and tt.date!='2022-09-27'

3、制作仪表板(导入模板)

(1)通过导入模板的方式创建仪表板,仪表板创建成功后,逐个编辑仪表板中的视图,修改视图的数据集即可(​​点击此处下载模板​​)。

数据分析原来还可以这么搞?_数据分析_09

数据分析原来还可以这么搞?_数据集_10

数据分析原来还可以这么搞?_DataEase_11

仪表板视图与数据集对应关系如下表:


视图(12个)



数据集(8个)



阅读总量



每日阅读总量数据



文章总数、文章阅读量分布



知乎_t_zhihu_article



回答总数、回答阅读量分布



知乎_t_zhihu_answer



文章阅读量占比、回答阅读量占比



文章回答占比



账号阅读量走势图



账号每日阅读增量



账号阅读总量对比图



账号回答文章阅读数



累计阅读量Top5、内容列表



文章回答汇总



今日阅读增长量排名Top10



今日文章阅读量增长数


五、总结

完成上面的步骤之后,一个简单的数据分析看板就制作完成了,我们得到了一个完整的“多知乎账号内容分析看板”,通过此仪表板你可以直观的看到所有账号的文章阅读量占比、回答阅读量占比,账号所有的内容列表,各个账号的阅读量走势,账号的阅读量排名情况,以及阅读量最高的文章有哪些等等。

这个方法不仅适用于对知乎账号的内容分析,同时也适用于各类账号的内容分析,只要你能拿到需要分析的数据,使用这些数据,结合DataEase进行数据分析,都可以制作数据分析看板。

标签:数据分析,这么,pv,created,-%,publish,time,原来,zhihu
From: https://blog.51cto.com/u_15922912/6002354

相关文章