🔎#2 JQL 의 history 검색 연산자
- 1 Change 연산자
- 1.1 Change from
- 1.2 Change from to
- 1.3 Change By
- 1.4 Change by During
- 2 Was 연산자
- 2.1 was
- 2.2 was not
- 2.3 was in
- 2.4 was not in
- 3 Ref
지난 글에서 created, updated 같이 날자를 대상으로 검색하는 기능에 대해서 설명했는데 업무 이력이 많아지다보면 어떤 일을 대략 언제쯤 한 것 같은데 구체적인 날자가 기억이 안 날수 있습니다.
JIRA 의 이슈 상태 필드는 마지막 상태이므로 특정 기간의 상태를 확인하려면 별도의 방법이 필요합니다.
그래서 필드나 상태의 이전 변경 사항을 다룰수 있는 특별한 연산자가 필요한데 그게 바로 was 와 changed 연산자이며 이는 이슈의 기록(history) 필드에 대해서 검색하므로 history 검색이라고도 합니다.
Change 연산자
특정 필드 값의 변경 사항을 상세하게 검색할 수 있는 연산자로 다음과 같은 키워드를 사용할 수 있습니다.
AFTER "date"
BEFORE "date"
BY "username"
DURING ("date1","date2")
ON "date"
FROM "oldvalue"
TO "newvalue"
예로 다음 JQL 은 담당자가 변경된 이슈들을 표시합니다.
assignee CHANGED |
다음은 담당자가 변경된 이슈를 우선 순위와 최근 변경일을 기준으로 정렬합니다.
assignee CHANGED order by priority, updated |
여기에서 updated 와 updatedDate 가 같이 뜨는데 두 필드의 차이가 뭔지 궁금하실수 있습니다.
Atlassian 의 Jira field 관련 매뉴얼을 보면 몇몇 필드는 alias 가 지정되어 있는데 예로 updatedDate는 updated 의 alias 이며 createdDate 도 created 의 alias 입니다.
https://support.atlassian.com/jira-service-desk-cloud/docs/advanced-search-reference-jql-fields/
그리고 duedate 도 due 의 alias 로 나중에 JQL 에 사용할 수 있는 필드의 자세한 내용이 궁금하다면 매뉴얼을 참고하시면 됩니다.
Change from
상태가 완료에서 진행중으로 변경된 이력이 있는 모든 이슈들을 표시합니다.
status CHANGED FROM "done" to "In Progress" |
칸반의 정책이 동시 진행 작업 제약을 초과한 보드가 있을 경우 이슈를 선별해서 이전 상태로 보낼 수 있다고 가정해 보겠습니다.
Change from to
다음은 제약에 초과되서 관리자가 진행중 컬럼에서 "개발하기로 선택됨" 컬럼으로 변경한 이슈들을 찾는 jql 입니다.
status CHANGED FROM "In Progress" to "selected for development" order by created |
그리고 이슈의 기록 필드를 보면 변경 이력에 "진행중" 에서 '개발하기로 선택됨' 으로 변경된 것을 확인할 수 있습니다.
Change By
다음은 우선 순위 필드가 lesstif 에 의해 바뀌었고 변경 기간은 지난 달인 이슈를 검색합니다.
priority CHANGED BY 557058:5927b3d9-d258-473f-af86-16d3214d8496 BEFORE endOfMonth(-1) AFTER startOfMonth(-1) order by priority |
Change by During
BEFORE 와 AFTER 를 같이 사용할 경우 헷갈리므로 DURING 키워드를 사용해서 시작일과 종료일을 명시하는 게 가독성이 훨씬 좋습니다.
priority CHANGED BY 557058:5927b3d9-d258-473f-af86-16d3214d8496 DURING(startOfMonth(-1), endOfMonth(-1)) order by priority |
듀링 연산자의 날자는 아래와 같이 yyyy-mm-dd 형태로 사용할 수도 있습니다.
priority CHANGED BY 557058:5927b3d9-d258-473f-af86-16d3214d8496 DURING ("2020-09-01","2020-09-30") |
어떤 날자가 가능한지는 during 에 지정하는 날자 형식을 틀리게 입력하면 팝업 창으로 알려줍니다.
priority CHANGED BY 557058:5927b3d9-d258-473f-af86-16d3214d8496 DURING ("2020-09-01","2020-09-32") |
Was 연산자
Was 는 과거에 특정 상태였거나 현재 특정 상태인 이슈들을 검색하며 changed 연산자처럼 다음과 같은 키워드들을 제공합니다.
BY "username"
BEFORE "date"
AFTER "date"
ON "date"
DURING ("date1","date2") - date1, date2 기간내에 상태 변경을 검색
was
다음은 백엔드 개발자가 담당인 이슈중에 상태가 "진행중" 인 적이 있는 이슈를 검색해서 최근 변경일을 기준으로 정렬합니다.
status was "In Progress" and assignee = 557058:74566060-7fe0-47be-9ca9-9dd773514ded order by updated |
다음은 lesstif 에 의해 "진행중" 상태로 변경이 되고 담당자가 백엔드 개발자인 이슈를 검색합니다.
status was "In Progress" by lesstif order by duedate |
status WAS "Resolved" BY abcde-12345-fedcba DURING ("2010/01/01","2011/01/01") |
was not
was 의 반대로 다음은 상태가 "In progress" 였던적이 없는 이슈를 등록일 기준으로 나열합니다.
status was not "In Progress" order by created |
다음은 8월 3일 이전에는 "진행중" 상태가 아니었던 이슈들을 검색합니다.
status WAS NOT "In Progress" BEFORE "2020/08/3" |
was in
Was in 은 여러 조건들이 있을 때 사용하는 연산자로 다음은 "개발하기로 선택됨" 과 "진행중" 상태였던 적이 있는 모든 이슈들을 출력합니다.
status WAS IN ("Selected for development", "In progress") |
was not in
Was not in 은 여러 조건들이 아닌 경우를 추출할때 사용하는 연산자로 다음은 "개발하기로 선택됨" 과 "진행중" 상태였던 적이 없는 모든 이슈들을 출력합니다.
status WAS not IN ("Selected for development", "In progress") |
JQL 을 활용하는 유용한 예제는 JQL(JIRA Query Language) 활용법 #3 실전 사례 을 참고하세요.