Это хорошее начало, но учтите, что у вас есть запрос, который превышает 1 ТБ данных и быстро израсходует вашу месячную бесплатную квоту.
Я рекомендую вам начать с извлечения всех интересных строк (например, Java связанных) к новой таблице. Затем запустите ваши будущие запросы из таблицы меньшего размера.
Этот запрос даст вам нужные результаты:
SELECT repo.name
, MAX(CAST(JSON_EXTRACT_SCALAR(payload, '$.pull_request.base.repo.stargazers_count')AS INT64)) stars
FROM `githubarchive.month.201912`
WHERE JSON_EXTRACT_SCALAR(payload, '$.pull_request.base.repo.language') = 'Java'
AND type='PullRequestEvent'
GROUP by repo.name
ORDER BY stars DESC
Я смотрю только на репо, в которых были запросы на извлечение в декабре 2019 года. Это может быть хорошим признаком того, что репо живо.
Поскольку я только если посмотреть на декабрь, стоимость запроса составляет 1/12.
MAX()
дает вам общее количество звезд на момент запроса извлечения.
Теперь позвольте мне создать и поделиться с вами таблицей меньшего размера, чтобы получить самые популярные репозитории по языкам:
CREATE TABLE `fh-bigquery.github_extracts.201912_repo_lang_stars`
AS
SELECT repo.name
, MAX(CAST(JSON_EXTRACT_SCALAR(payload, '$.pull_request.base.repo.stargazers_count')AS INT64)) stars
, JSON_EXTRACT_SCALAR(payload, '$.pull_request.base.repo.language') lang
FROM `githubarchive.month.201912`
WHERE type='PullRequestEvent'
GROUP by repo.name, lang
# 28.1 sec elapsed, 161.7 GB processed
;
SELECT lang
, COUNT(*) repos
, ARRAY_AGG(STRUCT(name, stars) ORDER BY stars DESC LIMIT 3) repo
FROM `fh-bigquery.github_extracts.201912_repo_lang_stars`
GROUP BY lang
ORDER BY repos DESC
# 1.4 sec elapsed, 52.2 MB processed