我想在github存档时间轴数据集上使用Google Big Query检索有关存储库的最新信息。
我尝试加入max(created_at),但是我的信息非常不完整。以下是rails repo的查询:
SELECT *
FROM [githubarchive:github.timeline] a
JOIN EACH
(
SELECT MAX(created_at) as max_created, repository_url
FROM [githubarchive:github.timeline]
GROUP EACH BY repository_url
) b
ON
b.max_created = a.created_at and
b.repository_url = a.repository_url
WHERE payload_ref_type="repository" AND a.repository_name = 'rails'
我知道此数据集在2011年之前不包含数据,但它应包含有关最近活动存储库的信息
我不明白这个查询的结果:
我的查询在某种程度上是假的,为什么不返回PushEvents? 还有关于github存档数据集的另一个技巧吗?
答案 0 :(得分:2)
如果要检索行的最新版本,则需要使用Window functions。
您可以使用。{/ p>根据created_at
时间戳列获取修改的顺序
SELECT *
FROM
(SELECT a.*,
row_number() over (partition BY repository_url
ORDER BY created_at DESC) AS seq_num
FROM [githubarchive:github.timeline] a
WHERE payload_ref_type="repository"
AND a.repository_name = 'rails') d
WHERE seq_num=1 LIMIT 10
seq_num=1
表示它将从该特定分区中获取第一个条目,因为我们命令降序将是最近的条目。
在查询中保留payload_ref_type="repository
只会返回1050个回购,但如果删除该部分,则会有更多。
在相同的风格中,您还可以利用日期和月度活动中的数据。它们位于单独的表中,可以与表通配符函数一起使用。