GLQL 데이터 소스
GitLab v19.5요약
GLQL은 다음 데이터 소스를 쿼리할 수 있습니다. 각 데이터 소스에는 필터링, 표시, 정렬에 사용할 수 있는 고유한 지원 필드가 있습니다. 쿼리에서 type 필드를 사용하여 데이터 소스를 지정합니다. 각 데이터 소스에는 데이터를 쿼리할 위치를 정의하는 범위(scope)가 필요합니다.
GLQL은 다음 데이터 소스를 쿼리할 수 있습니다.
| 데이터 소스 | 표준 모드 | 분석 모드 | type 값 |
설명 |
|---|---|---|---|---|
| Work items | ✅ | ❌ | Issue, Incident, TestCase, Requirement, Task, Ticket, Objective, KeyResult, Epic |
이슈, 에픽을 비롯한 work item 유형입니다. type을 생략하면 기본값으로 사용됩니다. |
| Merge requests | ✅ | ✅ | MergeRequest |
코드 리뷰 및 머지 워크플로입니다. |
| Pipelines | ✅ | ✅ | Pipeline |
CI/CD 파이프라인입니다. |
| Jobs | ✅ | ❌ | Job |
파이프라인 안의 CI/CD job 입니다. |
| Projects | ✅ | ❌ | Project |
네임스페이스 안의 프로젝트입니다. |
| Agent platform sessions | ❌ | ✅ | AgentPlatformSession |
GitLab Duo Agent Platform 세션 집계 분석입니다. |
| AI usage events | ❌ | ✅ | AiUsageEvent |
GitLab Duo 사용 이벤트 집계 분석입니다. |
| Code suggestions | ❌ | ✅ | CodeSuggestion |
GitLab Duo Code Suggestions 집계 분석입니다. |
| Contributions | ❌ | ✅ | Contribution |
기여 활동 집계 분석입니다. |
| Duo workflows | ❌ | ✅ | DuoWorkflow |
사용한 크레딧을 포함한 GitLab Duo Agent Platform 플로 집계 분석입니다. |
각 데이터 소스에는 필터링, 표시, 정렬에 사용할 수 있는 고유한 지원 필드가 있습니다.
쿼리에서 type 필드를 사용하여 데이터 소스를 지정합니다.
예를 들어 type = Issue 또는 type = MergeRequest와 같이 사용합니다.
여러 유형을 지원하는 데이터 소스는 in 연산자로 여러 유형에 걸쳐 쿼리합니다.
예를 들어 type in (Issue, Task)와 같이 사용합니다.
범위#
각 데이터 소스에는 데이터를 쿼리할 위치를 정의하는 범위(scope)가 필요합니다. 허용되는 범위는 데이터 소스마다 다르며, 각 데이터 소스 페이지에 정리되어 있습니다.
쿼리에서 범위를 정의합니다. 예를 들면 다음과 같습니다.
query: type = issue and project = "gitlab-org/gitlab"
범위를 지정하지 않으면 GLQL은 쿼리가 삽입된 위치를 기준으로 범위를 추론합니다.
- 프로젝트 컨텍스트(예: 이슈 또는 머지 리퀘스트 설명)에서는 현재 프로젝트를 사용합니다.
- 그룹 컨텍스트(예: 에픽 설명)에서는 현재 그룹을 사용합니다.
여러 그룹 및 프로젝트#
히스토리
- GitLab 19.5에서 도입되었습니다.
분석 모드에서 group과 project 필터는 목록을 받으므로
쿼리 하나로 여러 그룹이나 프로젝트의 데이터를 집계할 수 있습니다.
전체 경로와 함께 in 연산자를 사용합니다.
```glql
display: table
mode: analytics
query: type = MergeRequest and group in ("gitlab-org", "gitlab-com") and merged > -30d
dimensions: merged(weekly) as "Week"
metrics: totalCount as "Total", throughputCount as "Merged"
sort: merged desc
```
그룹, 프로젝트 또는 둘 다 나열할 수 있습니다.
group in ("gitlab-org", "gitlab-com")은 하위 그룹을 포함하여 나열한 그룹의 모든 프로젝트를 집계합니다.project in ("gitlab-org/gitlab", "gitlab-org/gitaly")는 나열한 프로젝트만 집계합니다.group in ("gitlab-org") and project in ("gitlab-com/www-gitlab-com")은 두 목록의 합집합을 집계합니다.group = "gitlab-org" and project in ("gitlab-org/gitlab", "gitlab-org/gitaly")는 나열한 프로젝트만 집계하며, 이 프로젝트는 해당 그룹에 속해야 합니다.
예를 들어 서로 다른 그룹의 프로젝트를 나란히 비교하려면 다음과 같이 합니다.
```glql
display: table
mode: analytics
query: type = Pipeline and project in ("gitlab-org/gitlab", "gitlab-org/gitaly", "gitlab-com/www-gitlab-com") and finished > -30d
dimensions: project as "Project"
metrics: totalCount as "Total", successRate as "Success rate"
sort: totalCount desc
```
목록을 사용할 때는 다음과 같습니다.
- 그룹과 프로젝트를 합쳐 최대 20개까지 나열할 수 있습니다.
- 나열한 모든 그룹과 프로젝트에 액세스할 수 있어야 합니다. 하나라도 없거나 액세스할 수 없으면 읽을 수 없는 경로를 명시한 오류와 함께 쿼리가 실패합니다.
- 경로가 하나뿐인 목록은
group = "..."또는project = "..."와 같이 동작합니다. - 프로젝트나 그룹에 쿼리를 삽입한 경우 GLQL은 해당 프로젝트나 그룹 대신 나열한 경로를 범위로 사용합니다.
표준 모드에서는 목록이 지원되지 않습니다. work item과 job 같은 데이터 소스는
group 또는 project 값 하나만 받으며, 목록을 지정하면 컴파일 오류가 발생합니다.