4

我正在尝试通过以下方式衡量编程语言的流行度:

  1. 回购中的星星数量与......
  2. 回购中使用的编程语言和...
  3. 每种语言的代码总字节数(认识到某些语言或多/少冗长)

方便的是,Github Archive 提供了大量的 Github 数据,并由 BigQuery 托管。唯一的问题是我在 Github Archive 中的各种事件类型的任何有效负载中都看不到可用的“语言”。

这是我一直在运行的 BigQuery 查询,试图找出是否以及在哪里可以在 Github 存档数据中填充语言:

SELECT *
FROM [githubarchive:month.201612]
WHERE JSON_EXTRACT(payload, "$.repository.language") is null
LIMIT 100

有人可以提供有关我是否能够以这种方式利用 Github Archive 数据的见解,以及我该如何去做?还是我需要采用其他方法?我看到 BigQuery 上还有一个 github_repos 公共数据集,它确实有一些语言指标,但语言指标似乎一直都结束了。我希望最终获得某种月度指标(即,在给定月份的“活跃”回购,最流行的语言是什么)。

任何建议表示赞赏!

4

2 回答 2

8

使用 BigQuery 和 GitHub Archive 和 GHTorrent -

要通过拉取请求获取语言,去年 12 月(从http://mads-hartmann.com/2015/02/05/github-archive.html复制粘贴):

SELECT COUNT(*) c, JSON_EXTRACT_SCALAR(payload, '$.pull_request.base.repo.language') lang
FROM [githubarchive:month.201612]
WHERE JSON_EXTRACT_SCALAR(payload, '$.pull_request.base.repo.language') IS NOT NULL
GROUP BY 2
ORDER BY 1 DESC
LIMIT 10

http://i.imgur.com/PmDxoEX.png

要查找每个项目的星数:

SELECT COUNT(*) c, repo.name 
FROM [githubarchive:month.201612]
WHERE type='WatchEvent'
GROUP BY 2
ORDER BY 1 DESC
LIMIT 10

http://i.imgur.com/yXDHUlB.png

对于快速语言与字节视图,您可以使用 GHTorrent:

SELECT language, SUM(bytes) bytes
FROM [ghtorrent-bq:ght.project_languages]
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10

http://i.imgur.com/8RvrVBA.png

或者要查看实际文件,请参阅BigQuery 上 GitHub 的内容

现在您可以混合这些查询以获得您想要的结果!

于 2017-01-05T01:48:28.730 回答
1
SELECT 
  JSON_EXTRACT_SCALAR(payload, '$.pull_request.head.repo.language') AS language,
  COUNT(1) AS usage
FROM [githubarchive:month.201601] 
GROUP BY language
HAVING NOT language IS NULL
ORDER BY usage DESC
于 2017-01-05T01:58:56.580 回答