YouTube 不喜欢数据集
在 2021 年 11 月,YouTube 从所有视频中移除了公开的 dislike 计数。虽然创作者仍然可以看到不喜欢的数量,但观众只能看到视频获得的 likes 数量。
该数据集包含超过 45.5 亿条记录,因此在复制和粘贴下面的命令时要小心,除非您的资源能够处理那种规模。下面的命令是在 ClickHouse Cloud 的 Production 实例上执行的。
数据以 JSON 格式存储,可以从 archive.org 下载。我们还在 S3 中提供了相同的数据,以便可以更有效地下载到 ClickHouse Cloud 实例中。
以下是创建 ClickHouse Cloud 中的表并插入数据的步骤。
以下步骤同样可以在本地安装的 ClickHouse上轻松运行。唯一的变化是使用 s3
函数,而不是 s3cluster
(除非您已经配置了集群 - 在这种情况下,将 default
更改为您的集群名称)。
逐步说明
- 让我们看看数据的样子。
s3cluster
表函数返回一个表,因此我们可以DESCRIBE
结果:
ClickHouse 从 JSON 文件中推断出以下模式:
- 根据推断出的模式,我们清理了数据类型并添加了一个主键。定义以下表:
- 以下命令从 S3 文件流式传输记录到
youtube
表中。
这插入大量数据 - 46.5 亿行。如果您不想要整个数据集,只需添加 LIMIT
子句和所需的行数。
关于我们的 INSERT
命令的几点评论:
parseDateTimeBestEffortUSOrZero
函数在输入的日期字段可能不符合正确格式时非常有用。如果fetch_date
没有被正确解析,则将其设置为0
upload_date
列包含有效日期,但也包含像 "4 hours ago" 这样的字符串 - 这显然不是有效日期。我们决定将原始值存储在upload_date_str
中,并尝试使用toDate(parseDateTimeBestEffortUSOrZero(upload_date::String))
进行解析。如果解析失败,我们将得到0
- 我们使用
ifNull
以避免在表中出现NULL
值。如果传入的值为NULL
,ifNull
函数将值设置为空字符串
- 在 ClickHouse Cloud 的 SQL 控制台中打开一个新标签页(或一个新的
clickhouse-client
窗口),并观察计数的增加。插入 45.6 亿行数据需要一些时间,具体取决于服务器资源。 (如果不调整任何设置,大约需要 4.5 小时。)
- 数据插入后,可以继续计算您最喜欢的视频或频道的不喜欢次数。让我们看看 ClickHouse 上传了多少视频:
上述查询运行得如此迅速,是因为我们选择 uploader
作为主键的第一列 - 因此只需处理 237k 行。
- 让我们看看 ClickHouse 视频的喜欢和不喜欢情况:
响应如下所示:
- 以下是标题或描述字段中包含 ClickHouse 的视频搜索:
这个查询需要处理每一行,并解析两个字符串列。尽管如此,我们依然以 415 万行/秒的速度获得了不错的性能:
结果如下:
问题
如果某人禁用评论,是否会降低有人实际点击喜欢或不喜欢的机会?
当评论被禁用时,人们是否更倾向于通过喜欢或不喜欢来表达自己对视频的看法?
启用评论似乎与更高的参与率相关。
视频数量随时间的变化 - 显著事件?
显著的上传者峰值出现在 新冠疫情 周围。
随时间推移字幕的增加及其时间
随着语音识别技术的进步,创建视频字幕变得比以往更容易,YouTube 在 2009 年底添加了自动字幕功能 - 那时是否出现了跳跃?
数据结果显示出 2009 年的跳跃。显然在那时,YouTube 移除了社区字幕功能,允许用户为其他人的视频上传字幕。这促成了一场非常成功的运动,促使创作者为听障人士添加字幕。