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

前言

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

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;
# 退出
exit

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

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

(2)配置知乎账号信息

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

“知乎数据分析小助手”项目地址:知乎数据分析小助手: 获取知乎账号的文章、回答数据,存入数据库,用作仪表板分析的数据源icon-default.png?t=N7T8https://gitee.com/zhaoqian617/zhihushujufenxixiaozhushou

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

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

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

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

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

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

 2、接口调用

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

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

​ 

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

1、添加数据源

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

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

​ 

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

​ 

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

视图(12个)

数据集(8个)

阅读总量

每日阅读总量数据

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

知乎_t_zhihu_article

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

知乎_t_zhihu_answer

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

文章回答占比

账号阅读量走势图

账号每日阅读增量

账号阅读总量对比图

账号回答文章阅读数

累计阅读量Top5、内容列表

文章回答汇总

今日阅读增长量排名Top10

今日文章阅读量增长数

五、总结

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

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

欢迎进群交流!!!

欢迎进群交流!!!

欢迎进群交流!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值