【问题标题】:How to get total number of GitHub stars for a given repo in BigQuery?如何获取 BigQuery 中给定存储库的 GitHub 星总数?
【发布时间】:2017-03-21 03:53:24
【问题描述】:

我的目标是随着时间的推移跟踪我的 BigQuery 存储库的受欢迎程度。

我想使用公开可用的 BigQuery 数据集,例如 GitHub Archivethe GitHub dataset

GitHub 数据集sample_repos 不包含星数快照:

SELECT
  watch_count
FROM
  [bigquery-public-data:github_repos.sample_repos]
WHERE
  repo_name == 'angular/angular'

返回 5318。

GitHub 存档是事件的时间线。我可以尝试将它们全部相加,但数字与 GitHub UI 中的数字不匹配。我猜是因为它不计算取消星标操作。这是我使用的查询:

SELECT
  COUNT(*)
FROM
  [githubarchive:year.2011],
  [githubarchive:year.2012],
  [githubarchive:year.2013],
  [githubarchive:year.2014],
  [githubarchive:year.2015],
  [githubarchive:year.2016],
  TABLE_DATE_RANGE([githubarchive:day.], TIMESTAMP('2017-01-01'), TIMESTAMP('2017-03-30') )
WHERE
  repo.name == 'angular/angular'
  AND type = "WatchEvent"

返回 24144

实际值为 21,921

【问题讨论】:

    标签: github google-bigquery


    【解决方案1】:
    #standardSQL
    SELECT 
      COUNT(*) naive_count,
      COUNT(DISTINCT actor.id) unique_by_actor_id, 
      COUNT(DISTINCT actor.login) unique_by_actor_login 
    FROM `githubarchive.month.*` 
    WHERE repo.name = 'angular/angular'
    AND type = "WatchEvent"
    

    天真计数:有些人明星和取消明星,并再次明星。这会创建重复的 WatchEvents。

    按演员 ID 计数唯一:每个人只能出演一次。我们可以计算这些(但我们不知道它们是否未加星标,因此总数会低于此值)。

    演员登录唯一性:某些历史月份缺少“actor.id”字段。我们可以改为查看“actor.login”字段(但有些人更改了他们的登录名)。

    另外,感谢 GHTorrent 项目:

    #standardSQL
    SELECT COUNT(*) stars
    FROM `ghtorrent-bq.ght_2017_01_19.watchers` a
    JOIN `ghtorrent-bq.ght_2017_01_19.projects` b
    ON a.repo_id=b.id
    WHERE url = 'https://api.github.com/repos/angular/angular'
    LIMIT 10
    

    20567,截至 2017 年 1 月 19 日。


    相关:

    • 当项目更改名称时会发生什么?

    https://stackoverflow.com/a/42935592/132438

    • 如何在更新之前获取更新的 GHtorrent 数据?

    https://stackoverflow.com/a/42935662/132438

    【讨论】:

    • githubarchive 方法似乎是angular/angular 的一个很好的近似值,但是当我尝试bazelbuild/bazel 时,我实际上得到了 3320(实际上是 6033)。
    • ghtorrent-bq 方法更接近。但是我想要最新的数据,数据集每天更新吗?每周一次?
    • 有趣的 cmets,我添加了 2 个额外的答案(考虑将新问题也提交到堆栈溢出,作为使对话过长的一个选项)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 2011-11-19
    • 2021-02-26
    • 1970-01-01
    • 2017-09-01
    • 2022-11-22
    相关资源
    最近更新 更多