쿼리 작성 및 실행 - Amazon Redshift

쿼리 작성 및 실행

편집기에서 쿼리를 입력하거나 쿼리(Queries) 목록에서 저장된 쿼리를 선택하고 실행(Run)을 선택할 수 있습니다.

기본적으로 제한 100(Limit 100)은 결과를 100행으로 제한하도록 설정됩니다. 더 큰 결과 집합을 반환하기 위해 이 옵션을 해제할 수 있습니다. 이 옵션을 해제하면 매우 큰 결과 집합을 방지하려는 경우 SQL 문에 LIMIT 옵션을 포함할 수 있습니다. 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서ORDER BY 절을 참조하세요.

결과 영역에 쿼리 계획을 표시하려면 설명(Explain)을 설정합니다. 결과의 Explain graph(그래프 설명)를 활성화하여 결과에 계획 설명이 그래픽으로 표시되도록 할 수 있습니다.

쿼리(Queries) 폴더에 쿼리를 저장하려면 저장(Save)을 선택합니다.

쿼리가 성공하면 성공 메시지가 나타납니다. 쿼리가 정보를 반환하면 결과(Results) 섹션에 결과가 표시됩니다. 결과 수가 표시 영역을 초과하면 결과 영역 상단에 숫자가 나타납니다. 숫자를 선택하여 연속적인 결과 페이지를 표시할 수 있습니다.

각 열에 대한 결과(Result)를 필터링하고 정렬할 수 있습니다. 결과 열 머리글에 필터 기준을 입력하려면 열 위로 마우스를 가져가서 열을 필터링하는 기준을 입력할 수 있는 메뉴( Filter menu )를 표시합니다.

쿼리에 오류가 포함된 경우 쿼리 편집기 v2는 결과 영역에 오류 메시지를 표시합니다. 이 메시지는 쿼리 수정 방법에 대한 정보를 제공합니다.

다음과 같이 결과 영역에서 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 사용하여 쿼리 결과를 내보내거나 복사할 수 있습니다.

  • 결과 집합 내보내기(Export result set)를 선택하고 JSON 또는 CSV를 선택하여 전체 행 결과 집합을 파일로 다운로드합니다. 결과 집합의 행 수는 쿼리의 한도(Limit) 옵션 또는 SQL limit 절에 의해 제한될 수 있습니다. 다운로드된 결과 집합의 최대 크기는 5MB입니다.

  • 행을 선택하지 않은 경우 현재 페이지 내보내기(Export current page)JSON 또는 CSV를 선택하여 현재 페이지의 행을 파일로 다운로드합니다.

  • 행을 선택한 경우 선택한 행 내보내기(Export selected rows)JSON 또는 CSV를 선택하여 선택한 행을 파일로 다운로드합니다.

  • 행을 선택한 경우 행 복사(Copy rows)를 선택하여 선택한 행을 클립보드로 복사합니다.

  • 행을 선택한 경우 머리글이 있는 행 복사(Copy rows with headers)를 선택하여 열 머리글이 있는 선택한 행을 클립보드로 복사합니다.

바로 가기 키 Ctrl+C(Windows) 또는 Cmd+C(macOS)를 사용하여 현재 결과 페이지의 데이터를 클립보드로 복사할 수도 있습니다. 행을 선택하지 않으면 포커스가 있는 셀이 클립보드에 복사됩니다. 행을 선택하면 선택한 행이 클립보드에 복사됩니다.

새 쿼리 탭을 추가하려면 New query tab 아이콘을 선택하고 쿼리 탭이 있는 행에 나타나는 Editor(편집기)를 선택합니다. 쿼리 탭은 Isolated session을 사용하거나 사용하지 않습니다. 격리된 세션을 사용하면 한 편집기 탭에서 임시 테이블을 생성하는 것과 같이 SQL 명령의 결과가 다른 편집기 탭에 표시되지 않습니다. 쿼리 편집기 v2에서 편집기 탭을 열 때 기본값은 격리된 세션입니다.

쿼리를 실행하려면
  1. 쿼리 영역에서 다음 중 하나를 수행합니다.

    • 쿼리를 입력합니다.

    • 복사한 쿼리를 붙여넣습니다.

    • 쿼리(Queries) 폴더를 선택하고 저장된 쿼리에 대한 컨텍스트 메뉴를 열고(마우스 오른쪽 버튼 클릭) 쿼리 열기(Open query)를 선택합니다.

  2. 실행하려는 SQL에 대해 올바른 Cluster(클러스터) 또는 Workgroup(작업 그룹)Database(데이터베이스) 값을 선택했는지 확인합니다.

    처음에는 트리 보기에서 Cluster(클러스터) 또는 Workgroup(작업 그룹)을 선택할 수 있습니다. 트리 보기에서 Database(데이터베이스)도 선택합니다.

    각 편집기 탭에서 Isolated session(격리된 세션) 헤더 근처에 있는 드롭다운 컨트롤을 사용하여 Cluster(클러스터) 또는 Workgroup(작업 그룹) 및 그리고 Database(데이터베이스)를 변경할 수 있습니다.

    각 편집기 탭에서 Isolated session(격리된 세션)에서 SQL을 실행할지 선택할 수 있습니다. 격리된 세션에는 데이터베이스에 대한 자체 연결이 있습니다. 다른 쿼리 편집기 세션과 격리된 SQL을 실행하는 데 사용합니다. 연결에 대한 자세한 내용은 쿼리 편집기 v2 열기 단원을 참조하십시오.

  3. Run(실행)을 선택합니다.

    결과(Result) 영역이 열리고 쿼리 결과가 표시됩니다.

쿼리에 대한 설명 계획을 표시하려면
  1. 쿼리를 선택합니다.

  2. 설명(Explain)을 설정합니다.

    기본적으로 설명 그래프(Explain graph)도 설정되어 있습니다.

  3. Run(실행)을 선택합니다.

    쿼리가 실행되고 설명 계획이 쿼리 결과(Result) 영역에 표시됩니다.

쿼리 편집기 v2는 다음 기능을 지원합니다.

  • 하나의 쿼리 탭에서 여러 SQL 문을 사용하여 쿼리를 작성할 수 있습니다. 쿼리는 순차적으로 실행되고 각 쿼리에 대해 여러 개의 결과 탭이 열립니다.

  • 세션 변수와 임시 테이블을 사용하여 쿼리를 작성할 수 있습니다.

  • ${parameter}로 지정된 대체 가능한 파라미터를 사용하여 쿼리를 작성할 수 있습니다. 대체 가능한 여러 파라미터를 사용하여 SQL 쿼리를 작성하고 SQL 문의 여러 위치에서 동일한 파라미터를 사용할 수 있습니다.

    쿼리가 실행되면 파라미터 값을 입력하는 창이 표시됩니다. 쿼리를 실행할 때마다 파라미터 값을 입력하는 창이 표시됩니다.

    예시는 예: 매출이 특정 파라미터보다 큼 섹션을 참조하세요.

  • 쿼리는 자동으로 버전이 관리됩니다. 실행할 쿼리의 이전 버전을 선택할 수 있습니다.

  • 워크플로를 계속하기 전에 쿼리가 완료될 때까지 기다릴 필요가 없습니다. 쿼리 편집기를 닫아도 쿼리는 계속 실행됩니다.

  • 쿼리를 작성할 때 스키마, 테이블 및 열 이름의 자동 완성이 지원됩니다.

SQL 편집기는 다음 기능을 지원합니다.

  • SQL에서 사용되는 시작 괄호와 끝 괄호의 색상이 일치합니다. 편집기에 세로선이 표시되어 대괄호를 일치시키는 데 도움이 됩니다.

  • SQL의 섹션을 축소하거나 확장할 수 있습니다.

  • SQL에서 텍스트를 검색하고 바꿀 수 있습니다.

  • 몇 가지 일반적인 편집 작업에 단축키를 사용할 수 있습니다.

  • 문제 영역을 쉽게 찾을 수 있도록 SQL 오류가 편집기에 강조 표시됩니다.

쿼리 에디터 기능의 데모를 보려면 다음 동영상을 시청하세요.

쿼리 예제

다음에서 실행할 수 있는 다양한 쿼리 유형에 대한 설명을 찾을 수 있습니다.

이러한 쿼리 중 많은 부분에 사용된 데이터는 tickit 샘플 스키마에서 가져온 것입니다. 샘플 tickit 데이터 로딩에 대한 자세한 내용은 샘플 데이터 로드을 참조하세요. tickit 샘플 데이터에 대한 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서에서 샘플 데이터베이스를 참조하세요.

이러한 예제 쿼리를 실행할 때 sample_data_dev와 같이 편집기에서 올바른 데이터베이스를 선택하는지 확인합니다.

예: 세션 변수 설정

다음 명령은 세션에 대해 search_path 서버 구성 파라미터를 public으로 설정합니다. 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서SETsearch_path를 참조하세요.

set search_path to public;

예: 총 매출 기준 상위 이벤트

다음 쿼리는 매출이 가장 많은 이벤트를 찾습니다.

select eventname, count(salesid) totalorders, sum(pricepaid) totalsales from sales, event where sales.eventid=event.eventid group by eventname order by 3;

다음은 결과의 부분 목록입니다.

eventname totalorders totalsales White Christmas 20 9352 Joshua Radin 38 23469 Beach Boys 58 30383 Linda Ronstadt 56 35043 Rascal Flatts 76 38214 Billy Idol 67 40101 Stephenie Meyer 72 41509 Indigo Girls 57 45399 ...

예: 매출이 특정 파라미터보다 큼

다음 쿼리는 판매 수량이 ${numberoforders}로 지정된 파라미터보다 큰 매출을 찾습니다. 파라미터 값이 7인 경우 결과는 60행입니다. 쿼리를 실행하면 쿼리 편집기 v2는 쿼리 양식 실행(Run query form) 창을 표시하여 SQL 문의 파라미터 값을 수집합니다.

select salesid, qtysold from sales where qtysold > ${numberoforders} order by 2;

다음은 결과의 부분 목록입니다.

salesid qtysold 20005 8 21279 8 130232 8 42737 8 74681 8 67103 8 105533 8 91620 8 121552 8 ...

예: 임시 테이블 생성

다음 문은 salesevent 테이블에서 정보를 선택하여 임시 테이블 eventsalestemp를 생성합니다.

create temporary table eventsalestemp as select eventname, count(salesid) totalorders, sum(pricepaid) totalsales from sales, event where sales.eventid=event.eventid group by eventname;

예: 임시 테이블에서 선택

다음 문은 총 주문을 기준으로 정렬된 임시 테이블 eventsalestemp에서 이벤트, 총 주문 및 총 매출을 선택합니다.

select eventname, totalorders, totalsales from eventsalestemp order by 2;

다음은 결과의 부분 목록입니다.

eventname totalorders totalsales White Christmas 20 9352 Joshua Radin 38 23469 Martina McBride 50 52932 Linda Ronstadt 56 35043 Indigo Girls 57 45399 Beach Boys 58 30383 ...