视图

GhArchive 上的数据是用户在 GitHub 上产生的公开活动的事件数据,然而在一些查询场景下,我们往往只需要针对数据对象的最新状态进行查询,而不需要遍历过往的历史数据。为了简化这些查询工作,可以通过数据库的视图功能,根据历史数据来构建数据对象最新状态的模型。

Pull Requests

视图名:pull_requests

字段名数据类型附加说明
event_idbigint
idbigint
repo_namevarchar(160)注意:仓库可能存在更名行为
numberinteger注意:Issue 与 Pull Request 的 Number 编号是统一的
titletext
statevarchar(20)Pull Request 的状态,可以分为:open / closed
bodytext
assignee_idbigint
milestone_idbigint
milestonevarchar(200)
base_shavarchar(40)
creator_idbigint创建者的 Actor ID,可以通过连接 actors 视图获取创建者的更多信息
created_atbigint
updated_attimestamp
closed_attimestamp
merged_attimestamp
merge_commit_shavarchar(40)
merger_idbigint合并者的 Actor ID
maintainer_can_modifyboolean是否允许 Maintainers (拥有仓库 Write 权限的用户) 进行修改
commentsinteger评论的数量
review_commentsintegerReview 评论的数量
additionsinteger添加代码总行数
deletionsinteger删除代码总行数
changed_filesinteger改变文件数量

Pull Request Assignees

Pull Request 当前分配的 Assignees。

视图名:pull_request_assignees

字段名数据类型附加说明
pull_request_idbigint
assignee_idbigint可与 actors 视图进行连接

Pull Request Requested Reviewers

Pull Request 当前请求过的 reviewers。

视图名:pull_request_requested_reviewers

字段名数据类型附加说明
pull_request_idbigint
requested_reviewer_idbigint可与 actors 视图基础数据表进行连接

Issues

视图名:issues

字段名数据类型附加说明
event_idbigint
idbigint
repo_idbigint
repo_namevarchar(160)注意:仓库可能存在更名行为
numberinteger注意:Issue 与 Pull Request 的 Number 编号是统一的
titletext
statevarchar(20)Issue 的状态,可以分为:open / closed
is_pull_requestboolean
bodytext
assignee_idbigint
milestone_idbigint
milestonevarchar(200)
creator_idbigint
created_attimestamp
updated_attimestamp最后的更新时间
closed_attimestamp
commentsinteger评论的数量

Issue Labels

视图名:issue_labels

字段名数据类型附加说明
issue_idbigint
label_idbigint
full_labelvarchar(160)完整的标签名称,格式如:<prefix>/<label>
prefixvarchar(160)标签的前缀,默认为 general,表示没有前缀
labelvarchar(160)标签去掉前缀后剩下的部分

Milestones

视图名:milestones

字段名数据类型附加说明
event_idbigint
idbigint
repo_idbigint
repo_namevarchar(160)注意:仓库可能存在更名行为
milestonevarchar(200)
statevarchar(20)
created_attimestamp
updated_attimestamp
closed_attimestamp

Comments

视图名:comments

字段名数据类型附加说明
event_idbigint
idbigint
repo_idbigint
repo_namevarchar(160)注意:仓库可能存在更名行为
numberinteger该值在 commit_comment 类型的评论中为空
commit_idbigint
comment_typevarchar(20)可选类型:commit_comment / review_comment / issue_comment
bodytext
commit_idbigint即 Commit SHA
original_commit_idbigint即 Commit SHA
positioninteger
original_positioninteger
pathtext
lineinteger
diff_hunktext
pull_request_review_idbigint
creator_idbigint
creator_loginvarchar(120)
created_attimestamp
updated_attimestamp
issue_idbigint
pull_request_idbigint

注意

  • commit_comment 类型的评论可能出现在 Pull Request 的 Commit 当中,也可能出现在仓库分支上的 Commit,针对仓库分支上 Commit 的评论是不会包含 issue_idpull_request_idnumber 几个字段,直接通过 Commit SHA 与 Comment ID 来唯一确定一条评论,例如:chaos-mesh/chaos-mesh#41101958

已知问题

  • 由于 gha_issues_pull_requests 基础信息表的数据缺失,根据 pull_request_id 不一定能够找到对应的 issue_id,建议使用 number 字段替代。

Commits

视图名:commits

注意:这里的 commit 不包含 Pull Request 当中的 commit,而包含

字段名数据类型附加说明
shabigint
event_idbigint
messagetext
is_distinctboolean
author_idbigint
author_namevarchar(160)
author_emailvarchar(160)
committer_idbigint
committer_namevarchar(160)
committer_emailvarchar(160)
loc_addedinteger
loc_removedinteger
files_changedinteger
repo_idbigint
repo_namevarchar(160)

Actors

视图名:actors

字段名数据类型附加说明
idbigint
loginvarchar(120)
namevarchar(120)
sexvarchar(1)
sex_probdouble
country_idvarchar(2)参照 gha_countries 基础数据表
country_nametext
tzvarchar(40)
tz_offsetinteger
ageinteger
company_namevarchar(160)
merged_prsinteger
is_code_contributorboolean根据 PR 数量是否大于 1 来判断是否为代码贡献者
is_botboolean根据 gha_bot_logins 表的 pattern 判断该 login 的 actor 是否为机器人