쿼리 에디터 v2 생성형 SQL 사용(미리 보기) - Amazon Redshift

쿼리 에디터 v2 생성형 SQL 사용(미리 보기)

미리 보기로 출시된 쿼리 에디터 v2 생성형 SQL에 대한 사전 릴리스 설명서입니다. 설명서 및 기능은 모두 변경될 수 있습니다. 프로덕션 환경이 아닌 테스트 환경에서만 이 기능을 사용하는 것이 좋습니다. 미리 보기 이용 약관은 AWS 서비스 약관베타 서비스 참여을 참조하세요.
참고

현재 생성형 SQL 지원은 다음 AWS 리전에서만 사용할 수 있습니다.

  • 미국 동부(버지니아 북부) 리전(us-east-1)

  • 미국 서부(오레곤) 리전(us-west-2)

  • 유럽(프랑크푸르트) 리전(eu-central-1)

Amazon Redshift 쿼리 에디터 v2에서 Amazon Q 생성형 SQL 기능을 사용할 수 있습니다. 생성형 SQL은 프롬프트와 데이터베이스 스키마를 기반으로 SQL 문을 생성하는 코딩 도우미입니다. 이 코딩 도우미는 쿼리 에디터 v2에서 노트북을 작성하는 동안 사용할 수 있습니다.

생성형 SQL을 사용할 때는 구체적인 질문을 하고, 복잡한 요청이 있을 때는 반복하고, 답변이 정확한지 검증하세요.

자연어로 분석 요청을 제공할 때는 코딩 도우미가 필요한 내용을 정확히 이해할 수 있도록 최대한 구체적으로 작성하세요. 'find top venues that sold the most tickets(티켓을 가장 많이 판매한 공연장을 찾아줘)'라고 묻는 대신 '2008년에 티켓을 가장 많이 판매한 공연장 세 개의 이름/ID를 찾아줘(find names/ids of top three venues that sold the most tickets in 2008)'와 같이 세부 정보를 더 제공하세요. 동일한 객체를 서로 다른 방식으로 참조하면 도우미에게 혼동을 줄 수 있으므로 데이터베이스에 정의된 스키마, 테이블, 열 이름 등 데이터베이스의 일관된 객체 이름을 사용하세요.

복잡한 요청을 도우미가 해석하기 쉬운 여러 개의 간단한 명령문으로 나누세요. 반복적으로 후속 질문을 하면 도우미로부터 더 자세한 분석을 받을 수 있습니다. 예를 들어, 먼저 'which state has the most venues?(공연장이 가장 많은 주가 어디야?)'라고 물어보세요. 그런 다음 답변을 바탕으로 'which is the most popular venue from this state?(이 주에서 가장 인기 있는 공연장은 어디야?)'라고 물어보세요.

생성된 SQL을 실행하기 전에 검토하여 정확성을 확인하세요. 생성된 SQL 쿼리에 오류가 있거나 의도와 맞지 않는 경우 요청을 완전히 바꾸는 대신 도우미에게 수정 방법에 대한 지침을 제공하세요. 예를 들어, 쿼리에 연도의 조건자 절이 누락된 경우 '2008년을 기준으로 공연장을 알려줘'라고 요청하세요.

생성형 SQL을 사용할 때 고려할 사항

채팅 패널을 사용할 때 다음 사항을 고려하세요.

  • 계정의 쿼리 에디터 v2 관리자가 생성형 SQL 설정 페이지에서 채팅 기능을 활성화한 상태여야 합니다.

  • 쿼리 에디터 v2 생성형 SQL을 사용하려면 쿼리 에디터 v2의 AWS 관리형 정책에 지정된 기타 권한 외에도 IAM 정책의 sqlworkbench:GetQSqlRecommendations 권한이 필요합니다. AWS 관리형 정책에 대한 자세한 정보는 쿼리 편집기 v2에 액세스 단원을 참조하세요.

  • 질문은 영어로 작성해야 합니다.

  • 질문은 클러스터 또는 작업 그룹에 연결된 데이터베이스를 참조해야 합니다. 빈 상태 오류를 방지하려면 데이터베이스에 하나 이상의 테이블과 어느 정도의 데이터가 있어야 합니다.

  • 질문은 연결된 데이터베이스에 저장된 데이터를 참조해야 합니다. 외부 스키마는 참조할 수 없습니다. 지원되는 스키마에 대한 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서의 Create schema를 참조하세요.

  • SQL 생성으로 인해 연결된 데이터베이스가 변경되는 질문을 하면 경고가 발생할 수 있습니다.

  • 생성형 AI 기술은 새로운 기술이며 응답에 할루시네이션이라고 하는 실수가 있을 수 있습니다. 환경 또는 워크로드에서 사용하기 전에 오류와 취약성이 있는지 모든 코드를 테스트하고 검토하세요.

  • 계정의 다른 사용자가 실행한 SQL 쿼리를 공유하여 제안을 개선할 수 있습니다. 계정 관리자는 다음 SQL 명령을 실행하여 계정의 쿼리 기록에 대한 액세스를 허용할 수 있습니다.

    GRANT ROLE SYS:MONITOR to "IAMR:role-name"; GRANT ROLE SYS:MONITOR to "IAM:user-name"; GRANT ROLE SYS:MONITOR to "database-username";

    SYS:MONITOR에 대한 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서의 Amazon Redshift 시스템 정의 역할을 참조하세요.

  • 데이터는 안전하고 공개되지 않습니다. 데이터는 계정 간에 공유되지 않습니다. 쿼리, 데이터, 데이터베이스 스키마는 생성형 AI 파운데이션 모델(FM)을 훈련하는 데 사용되지 않습니다. 입력은 FM에 대한 맥락적 프롬프트로 질문자의 쿼리에만 답변하는 데 사용됩니다.

생성형 SQL 사용

올바른 권한을 구성한 후 쿼리 에디터 v2에서 노트북으로 작업할 때 아이콘을 선택하여 대화를 시작할 수 있습니다.

쿼리 에디터 v2 생성형 SQL 채팅을 사용하여 SQL을 생성하는 방법
  1. 쿼리 에디터 v2의 편집기 탭에서 노트북을 엽니다.

  2. Generative SQL panel 생성형 SQL 아이콘을 선택한 다음 채팅 패널에서 안내를 따라 Amazon Redshift 쿼리 에디터 v2 생성형 SQL에 질문하세요.

    프롬프트 필드에 질문을 입력하면 쿼리 에디터 v2가 응답으로 SQL을 제안합니다. 오류가 발생하면 채팅 패널에 반환됩니다.

  3. 노트북에 추가를 선택하여 프롬프트가 있는 마크다운 셀과 제안된 SQL이 포함된 SQL 셀을 노트북에 추가합니다.

  4. (선택 사항) 동일한 프롬프트에 대해 다른 응답을 생성하려면 SQL 재생성을 선택합니다. 현재 프롬프트에서 SQL 재생성을 한 번 시도할 수 있습니다.

  5. (선택 사항) 생성형 SQL 채팅 패널에서 More 더 보기 아이콘을 선택한 다음 데이터베이스 새로 고침을 선택하여 연결된 데이터베이스를 설명하는 메타데이터를 새로 고칩니다. 이 메타데이터에는 데이터베이스의 스키마, 테이블 및 열에 대한 정의가 포함됩니다.

관리자 권한으로 생성형 SQL 설정 업데이트

적절한 IAM 권한을 가진 사용자는 같은 AWS 계정 내의 다른 사용자에 대한 생성형 SQL 설정을 보고 변경할 수 있습니다. 이 관리자는 쿼리 에디터 v2의 AWS 관리형 정책에 지정된 다른 권한 외에도 IAM 정책의 sqlworkbench:UpdateAccountQSqlSettings 권한이 있어야 합니다. 관리형 정책에 대한 자세한 정보는 쿼리 편집기 v2를 사용하는 데 필요한 권한 단원을 참조하세요.

관리자가 계정의 모든 사용자에 대해 생성형 SQL 채팅을 활성화하는 방법
  1. Settings 설정 아이콘을 사용하여 다양한 설정 화면의 메뉴를 표시합니다.

  2. 그런 다음 Generative SQL settings 생성형 SQL 설정 아이콘을 선택하여 생성형 SQL 설정 페이지를 표시합니다.

  3. 생성형 SQL을 선택하여 계정 내 사용자에 대해 생성형 SQL 기능을 활성화합니다.

TICKIT 데이터와 함께 Amazon Q 생성형 SQL 기능을 사용하는 예

SQL을 생성하기 위한 효율적인 프롬프트를 작성하려면 데이터베이스 스키마와 데이터에 대해 알아야 합니다. TICKIT 데이터는 팩트 테이블 2개와 차원 테이블 5개, 총 7개의 테이블로 구성되어 있습니다. 샘플 데이터에는 2008년에 발생한 엔터테인먼트 이벤트 참석자에 대한 판매 기록이 포함되어 있습니다. TICKIT 데이터 스키마에 대한 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서의 샘플 데이터베이스를 참조하세요. Amazon Redshift 콘솔과 쿼리 에디터 v2에서 다양한 방법을 사용하여 TICKIT 데이터를 데이터베이스에 로드할 수 있습니다. 쿼리 에디터 v2는 TICKIT 데이터를 sample_data_dev 데이터베이스에 로드하는 방법을 제공합니다. 자세한 설명은 샘플 데이터 로드을 참조하세요. TICKIT 데이터에 대한 예시 프롬프트 또한 제공합니다. 다음 시나리오는 TICKIT 샘플 데이터에 대한 SQL을 생성하기 위한 생성형 SQL과의 대화를 설명합니다. 이 시나리오에서는 TICKIT 샘플 데이터가 Amazon Redshift 클러스터의 dev 데이터베이스에 이미 생성되어 있습니다.

참고

이 예는 대화를 설명하기 위한 것입니다. 동일한 프롬프트를 사용해도 사용자가 받는 생성형 SQL의 응답이 여기에 나온 결과와 일치하지 않을 수 있습니다.

쿼리 에디터 v2 생성형 SQL과의 대화 예시
  1. 편집기에서 TICKIT 샘플 데이터가 포함된 클러스터 또는 작업 그룹에 연결합니다.

  2. 빈 노트북을 만들고 Generative SQL 생성형 SQL 아이콘을 선택하여 채팅 패널을 엽니다.

  3. 다음 프롬프트를 입력하여 VENUE 테이블의 레코드 수를 확인하기 위한 SQL을 생성합니다.

    How many venues are there?
    SELECT
      COUNT(*) AS num_venues
    FROM
      tickit.venue

    노트북에 추가를 선택하여 열려 있는 노트북에 두 개의 셀을 추가합니다. 'How many venues are there?'라는 마크다운 셀 1개와 생성된 SQL이 들어 있는 셀 1개입니다.

    SQL 셀에서 실행을 선택하여 결과를 수신합니다.

    count ------ 202
  4. 다른 버전의 SQL을 요청하려면 SQL 재생성을 선택하면 다음과 같은 답변을 받을 수 있습니다.

    SELECT venuestate, COUNT(*) AS num_venues FROM tickit.venue GROUP BY venuestate

    노트북에 추가를 선택하여 열려 있는 노트북에 두 개의 셀을 더 추가합니다. 'How many venues are there?'라는 마크다운 셀 1개와 생성된 SQL이 들어 있는 셀 1개입니다.

    SQL 셀에서 실행을 선택하여 번호별로 공연장이 있는 주가 나열된 결과를 수신합니다.

    venuestate num_venues ---------------------- MA 4 OH 8 MI 5 ...
  5. 생성형 SQL 도우미는 사용자가 질문하는 내용을 추측할 수 있습니다. 데이터베이스에 위젯이 없더라도 질문할 수 있습니다. 이 경우 SQL을 생성할 수 없다는 메시지가 표시됩니다.

    How many widgets are there?
    I was not able to generate any SQL
  6. 데이터베이스를 더 자세히 파악하면 더 구체적인 질문으로 SQL을 생성할 수 있습니다. 예를 들어, 데이터베이스에 2008년 몇 개월간의 판매 데이터가 들어 있다는 것을 알고 있다면 다음 프롬프트를 입력하여 SQL을 생성하여 2008년 11월의 판매량을 구할 수 있습니다.

    How many sales were there in November 2008?
    SELECT
      COUNT(*) AS num_sales
    FROM
      tickit.sales s
      JOIN tickit.date d ON s.dateid = d.dateid
    WHERE
      d.month = 'November'
      AND d.year = 2008

    노트북에 추가를 선택하여 열려 있는 노트북에 두 개의 셀을 추가합니다. 'How many sales were there in November 2008?'이라는 마크다운 셀 한 개와 생성된 SQL이 들어 있는 셀 1개입니다.

    SQL 셀에서 실행을 선택하여 결과를 수신합니다.

    num_sales ----- 0

    원했던 결과가 나오지 않았습니다.

  7. date.month='November' 조건자는 DATE 테이블의 월이 약어로 표현될 것으로 예상한다는 것을 알 수 있습니다. 조건자를 d.month='NOV'로 변경하고 SQL을 다시 실행합니다.

    SELECT COUNT(*) FROM sales JOIN date ON sales.dateid = date.dateid WHERE date.month = 'NOV' AND date.year = 2008

    SQL 셀에서 실행을 선택하여 새 결과를 가져옵니다.

    count ----- 14261
  8. 연결된 데이터베이스를 변경하려는 질문을 하면 권장 SQL과 함께 경고 메시지가 반환됩니다. 데이터를 테이블에 삽입하는 SQL을 생성하려면 다음 프롬프트를 입력합니다.

    Insert 1 into the venue table.
    INSERT
    ,
    UPDATE
      OR delete data
    FROM
      the database AS that could potentially change the data.Please provide a query that ONLY selects data
    
    I was not able to generate the correct SQL code. I generated SQL, but you'll have to edit it to work with your database.

    노트북에 추가를 선택하여 열려 있는 노트북에 두 개의 셀을 추가하고 SQL을 실행하면 SQL이 실패합니다.

    ERROR: syntax error at or near "," Position: 132 [ErrorId: 1-6546764a-011df2691778846219ce6ec2]

이 시나리오는 쿼리 에디터 v2 생성형 SQL을 사용하는 기본적인 방법만을 설명한 것입니다. 이 생성형 AI 기술을 더 다양하게 실험하여 데이터베이스 쿼리를 위한 SQL 작성을 시작해 볼 수 있습니다.