Почему количество вилок в Github Archive для Big Query не соответствует пользовательскому интерфейсу? - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь получить различные метрики репозитория Github в Github Archive через Big Query ( документ здесь ). Однако, когда я пытаюсь подсчитать количество вилок, количество, которое я получаю, сильно отличается от количества вилок, указанного в пользовательском интерфейсе Github. Например, когда я запускаю этот скрипт sql:

SELECT repo.url,repo.name , COUNT(*) fork_count, 
FROM [githubarchive:year.2011],
  [githubarchive:year.2012],
  [githubarchive:year.2013],
  [githubarchive:year.2014],
  [githubarchive:year.2015],
  [githubarchive:year.2016],
  [githubarchive:year.2017],
  [githubarchive:year.2018],
  [githubarchive:month.201901]
WHERE type='ForkEvent'
and repo.url like 'https://github.com/python/cpython'
GROUP BY 1,2

Я получаю результат:

Row repo_url                           repo_name   fork_count    
1   https://github.com/python/cpython   cpython    177

Однако, когда я перехожу на URL 'https://github.com/python/cpython', я вижу, что есть 8198 вилок. В чем причина этого несоответствия?

EDIT:

Фелипе указал ниже, что для одного репо может быть несколько URL. Felipe's output

Однако даже при наличии нескольких URL-адресов число не совпадало с пользовательским интерфейсом, и на этот раз оно было значительно больше номера пользовательского интерфейса. Есть ли способ получить точное совпадение?

1 Ответ

0 голосов
/ 10 января 2019

Что вы запрашиваете? Обратите внимание, что вы получите разные результаты в зависимости от того, используете ли вы идентификатор репо, имя или URL:

#standardSQL
SELECT repo.name, repo.id, repo.url, COUNT(*) c
FROM `githubarchive.month.201*`
WHERE type='ForkEvent'
AND (
  repo.id = 81598961 
  OR repo.name='python/cpython'
  OR repo.url like 'https://github.com/python/cpython'
)
GROUP BY 1,2,3

enter image description here

Если вы хотите знать «когда?»:

#standardSQL
SELECT repo.name, repo.id, repo.url, COUNT(*) c
  , MIN(DATE(created_at)) since, MAX(DATE(created_at)) until
FROM `githubarchive.month.201*`
WHERE type='ForkEvent'
AND (
  repo.id = 81598961 
  OR repo.name='python/cpython'
  OR repo.url like 'https://github.com/python/cpython'
)
GROUP BY 1,2,3
ORDER BY since

enter image description here

РЕДАКТИРОВАТЬ:

GitHub перечисляет только один ответвление на пользователя - поэтому, если вы хотите удалить дубликаты, сделайте COUNT (DISTINCT actor.id), который снизит его до ~ 9k.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...