跳到主要内容
跳到主要内容

YouTube 不喜欢数据集

在 2021 年 11 月,YouTube 从所有视频中移除了公开的 dislike 计数。虽然创作者仍然可以看到不喜欢的数量,但观众只能看到视频获得的 likes 数量。

信息

该数据集包含超过 45.5 亿条记录,因此在复制和粘贴下面的命令时要小心,除非您的资源能够处理那种规模。下面的命令是在 ClickHouse CloudProduction 实例上执行的。

数据以 JSON 格式存储,可以从 archive.org 下载。我们还在 S3 中提供了相同的数据,以便可以更有效地下载到 ClickHouse Cloud 实例中。

以下是创建 ClickHouse Cloud 中的表并插入数据的步骤。

备注

以下步骤同样可以在本地安装的 ClickHouse上轻松运行。唯一的变化是使用 s3 函数,而不是 s3cluster (除非您已经配置了集群 - 在这种情况下,将 default 更改为您的集群名称)。

逐步说明

  1. 让我们看看数据的样子。s3cluster 表函数返回一个表,因此我们可以 DESCRIBE 结果:

ClickHouse 从 JSON 文件中推断出以下模式:

  1. 根据推断出的模式,我们清理了数据类型并添加了一个主键。定义以下表:
  1. 以下命令从 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 值。如果传入的值为 NULLifNull 函数将值设置为空字符串
  1. 在 ClickHouse Cloud 的 SQL 控制台中打开一个新标签页(或一个新的 clickhouse-client 窗口),并观察计数的增加。插入 45.6 亿行数据需要一些时间,具体取决于服务器资源。 (如果不调整任何设置,大约需要 4.5 小时。)
  1. 数据插入后,可以继续计算您最喜欢的视频或频道的不喜欢次数。让我们看看 ClickHouse 上传了多少视频:
备注

上述查询运行得如此迅速,是因为我们选择 uploader 作为主键的第一列 - 因此只需处理 237k 行。

  1. 让我们看看 ClickHouse 视频的喜欢和不喜欢情况:

响应如下所示:

  1. 以下是标题或描述字段中包含 ClickHouse 的视频搜索:

这个查询需要处理每一行,并解析两个字符串列。尽管如此,我们依然以 415 万行/秒的速度获得了不错的性能:

结果如下:

问题

如果某人禁用评论,是否会降低有人实际点击喜欢或不喜欢的机会?

当评论被禁用时,人们是否更倾向于通过喜欢或不喜欢来表达自己对视频的看法?

启用评论似乎与更高的参与率相关。

视频数量随时间的变化 - 显著事件?

显著的上传者峰值出现在 新冠疫情 周围。

随时间推移字幕的增加及其时间

随着语音识别技术的进步,创建视频字幕变得比以往更容易,YouTube 在 2009 年底添加了自动字幕功能 - 那时是否出现了跳跃?

数据结果显示出 2009 年的跳跃。显然在那时,YouTube 移除了社区字幕功能,允许用户为其他人的视频上传字幕。这促成了一场非常成功的运动,促使创作者为听障人士添加字幕。

随时间推移的顶级上传者

随着观看次数增加,喜欢比例变化如何?

观看次数的分布情况如何?