본문 바로가기
  • 폴라리스 오피스 기술 블로그
Solution/JIRA

[JIRA] JQL 활용하기 - 기본편

by 인프라웨어 2018. 7. 20.

JQL 이란?

JQL이란 Jira Query Language 로 좀더 강력하고 유연하게 이슈를 찾기 위해 사용할 수 있는 방법입니다. 기본 검색으로 검색하지 못하는 복잡한 검색을 JQL을 사용해서 검색할 수 있습니다. 

 

JQL 사용하기 

1. GNB에서 Issues > Search for issues 를 클릭합니다.

 

2. 검색 아이콘 우측에 Advanced 를 클릭합니다.

3. 입력창에 JQL 구문을 넣고 Enter를 치면 검색결과가 출력됩니다.

 

JQL 기본 문법

JQL 구조

JQL은 필드, 연산자, 값, 키워드로 구성되어 있습니다. 이 조합을 여러번 사용하여 강력한 검색 조건을 만들 수 있습니다.

필드

JIRA 필드 또는 JIRA에서 정의된 사용자 정의 필드 입니다. 이슈에 대한 여러가지 정보를 담고 있습니다.
 
각 필드별로 사용할 수 있는 연산자와 함수가 있으며 자세한 사항은 아래 링크 참조바랍니다.
 
 

연산자

왼쪽에 있는 필드를 오른쪽에 있는 필드의 하나 이상의 값과 비교하여 검색되도록 합니다.
 

 연산자

설명 

 =

지정된 값과 정확하게 일치하는 이슈를 검색

 !=

지정된 값과 일치하지 않는 이슈를 검색

 >

지정된 값보다 큰 이슈를 검색

 <

지정된 값보다 작은 이슈를 검색

 >=

지정된 값보다 크거나 같은 이슈를 검색

 <=

지정된 값보다 작거나 같은 이슈를 검색

 ~

입력한 텍스트(단어)가 포함되는 이슈를 검색

 !~

입력한 텍스트(단어)가 포함되지 않는 이슈를 검색 

 IN

다수의 지정된 값에 포함되는 이슈를 검색 

 NOT IN

다수의 지정된 값에 포함되지 않는 이슈를 검색

 IS

지정된 필드에 값이 없는 이슈를 검색 (EMPTY, NULL 키워드와 함께 사용)

 IS NOT

지정된 필드에 값이 있는 이슈를 검색 (EMPTY, NULL 키워드와 함께 사용)

 WAS

지정된 필드의 값이 현재나 과거에 있었던 이슈를 검색

 WAS IN

다수의 지정된 필드의 값이 현재나 과거에 있었던 이슈를 검색 

 WAS NOT IN

다수의 지정된 필드의 값이 현재나 과거에 없었던 이슈를 검색  

 WAS NOT

지정된 필드의 값이 현재나 과거에 없었던 이슈를 검색 

 CHANGED

지정된 필드의 값이 변경된 이슈를 검색

 

쿼리의 실제 데이터 입니다.

 

키워드

특별한 의미를 가진 단어입니다. 다음 기능을 수행합니다. 
-  둘 이상의 하나의 쿼리문을 결합하여 복합한 쿼리문 생성
-  하나 이상의 쿼리문의 로직을 변경
-  연산자의 로직을 변경
-  쿼리의 명시적 정의
-  특정 함수 실행
 

 키워드

설명 

 AND

여러개 쿼리문의 조건이 모두 일치하는 이슈를 검색

 OR

여러개 쿼리문의 조건 중 하나라도 일치하는 이슈를 검색

 NOT

쿼리문의 조건에 해당하지 않는 이슈를 검색

 EMPTY

지정된 필드의 값이 없는 이슈를 검색

 NULL

지정된 필드의 값이 없는 이슈를 검색

 ORDER BY

검색결과를 지정된 필드로 정렬

 

검색 우선순위 지정

복잡한 JQL 문은 괄호를 사용하여 연산자의 우선순위를 적용 할 수 있습니다. 괄호를 사용하지 않는다면 쿼리문은 왼쪽에서 오른쪽으로 순차적으로 실행됩니다.

 

예약어 및 예약문자

JQL은 예약어 및 예약문자가 있으며 쿼리에서 이를 사용하려면 아래와 같이 처리해야 합니다. 
- 따옴표(큰따옴표, 작은따옴표 모두 가능)를 사용하여 예약어 및 예약문자를 둘러 쌉니다. 
- 예제 : Summry ~ "[example]"
 
예약문자
space (" ") + . , ; ? | * / % ^ $ # @ [ ]
 
예약어

"abort", "access", "add", "after", "alias", "all", "alter", "and", "any", "as", "asc", "audit", "avg", "before", "begin", "between", "boolean", "break", "by", "byte", "catch", "cf", "char", "character", "check", "checkpoint", "collate", "collation", "column", "commit", "connect", "continue", "count", "create", "current", "date", "decimal", "declare", "decrement", "default", "defaults", "define", "delete", "delimiter", "desc", "difference", "distinct", "divide", "do", "double", "drop", "else", "empty", "encoding", "end", "equals", "escape", "exclusive", "exec", "execute", "exists", "explain", "false", "fetch", "file", "field", "first", "float", "for", "from", "function", "go", "goto", "grant", "greater", "group", "having", "identified", "if", "immediate", "in", "increment", "index", "initial", "inner", "inout", "input", "insert", "int", "integer", "intersect", "intersection", "into", "is", "isempty", "isnull", "join", "last", "left", "less", "like", "limit", "lock", "long", "max", "min", "minus", "mode", "modify", "modulo", "more", "multiply", "next", "noaudit", "not", "notin", "nowait", "null", "number", "object", "of", "on", "option", "or", "order", "outer", "output", "power", "previous", "prior", "privileges", "public", "raise", "raw", "remainder", "rename", "resource", "return", "returns", "revoke", "right", "row", "rowid", "rownum", "rows", "select", "session", "set", "share", "size", "sqrt", "start", "strict", "string", "subtract", "sum", "synonym", "table", "then", "to", "trans", "transaction", "trigger", "true", "uid", "union", "unique", "update", "user", "validate", "values", "view", "when", "whenever", "where", "while", "with"

 

JQL 기본 예제

위에서 설명한 내용으로 기본적으로 사용할 수 있는 JQL 기본 예제입니다.

 

 

'인프라웨어테크놀러지' 프로젝트에서 상태가 'In Progress' 인 이슈 검색

project = 인프라웨어테크놀러지 AND status = "In Progress"

 

첨부파일이 있는 이슈 검색

attachments IS NOT EMPTY

 

이슈 댓글에 "처리 되었습니다."가 포함된 이슈 검색

comment ~ "\"처리 되었습니다.\""

 

이슈 생성 날짜가 2018-12-13  이전에 생성된 이슈 검색

created < "2018-12-13"

 

컴포넌트가 '컴포넌트1'이거나 '컴포넌트2'인 이슈 검색

component in (컴포넌트1, 컴포넌트2)

 

assignee가 변경된 이슈 검색

assignee CHANGED

 

assingee가 '김철수' 였던 이슈 검색

assignee WAS 김철수

 

duedate가 설정되지 않은 이슈를 검색하여 생성일, 우선순위 순으로 정렬

duedate = empty order by created, priority asc

 

 

 

 

JQL 실무 예제

실무에서 많이 사용하는 예제입니다. 
 
 
이번주 이슈 중 상태가 'In Progress' 였던 이슈 검색
status was (“In Progress”) DURING (startofweek(), endofweek());
 
Resolution이 'Fixed' 로 변경된 이슈 검색

resolution changed to “Fixed”

 

'인프라웨어' 프로젝트에서 김철수가 상태를 'In Progress'에서 'Resolved'로 변경한 이슈 검색

project = 인프라웨어 AND status CHANGED FROM “In Progress” TO “Resolved” BY 김철수

'인프라웨어' 프로젝트에서 생성된지 2주가 지난 이슈 중 우선순위가 'blocker'나 'critical'인 이슈를 검색해서 생성일 역순으로 정렬

project = 인프라웨어 AND priority in (blocker, critical) AND created > -2w ORDER BY created DESC

 

예상된 작업시간보다 오버된 이슈 (Time Tracking과 Worklog 사용 시)

workRatio > 100

 

내가 지난 1주 동안 본 이슈

lastViewd > "-1w"

 

특정필터에 있는 이슈 중 나에게 할당된 이슈

filter = "Test Filter" AND assignee = currentUser()

 

TIP

JQL 사용이 어려운 분들이 필터나 기타 설정에 JQL을 꼭 사용해야 할 경우가 있습니다. 이럴경우 이슈 검색을 기본 검색으로 설정한 후 필터 조건들을 설정하여 검색을 완료하신 후 고급 검색으로 변경하시면 기본 검색으로 설정한 결과를 자동으로 JQL 로 변경해줍니다.
 
 
 
Contact us
Address서울특별시 금천구 가산디지털1로 19 대륭테크노타운 18차 19층
Phone02-6190-7513
E-mail AtlassianBiz@polarisoffice.com
Homepage  partner.polarisofficecorp.com/atlassian/
 
 

 

사업자 정보 표시
인프라웨어테크놀러지 | 엄태철 | 서울특별시 금천구 가산디지털1로 19 대륭테크노타운 18차 19층 | 사업자 등록번호 : 109-86-08147 | TEL : 02-6190-7513 | Mail : partner@infrawaretech.com | 통신판매신고번호 : 110111-3676404호 | 사이버몰의 이용약관 바로가기

댓글