

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# 자습서: TICKIT 데이터와 함께 Amazon Q 생성형 SQL 기능 사용
<a name="query-editor-v2-generative-ai-example"></a>

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

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

**Amazon Q 생성형 SQL과의 상호 작용 예제**

1. **편집기**에서 TICKIT 샘플 데이터가 포함된 클러스터 또는 작업 그룹에 연결합니다.

1. 빈 노트북을 만들고 ![\[Generative SQL\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-amazon-q.png) 생성형 SQL 아이콘을 선택하여 채팅 패널을 엽니다.

1. 다음 프롬프트를 입력하여 `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
   ```

1. 다른 버전의 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	
   ...
   ```

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

   ```
   How many widgets are there?
   ```

   ```
   I was not able to generate any SQL
   ```

1. 데이터베이스를 더 자세히 파악하면 더 구체적인 질문으로 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
   ```

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

1. `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
   ```

1. 연결된 데이터베이스를 변경하려는 질문을 하면 권장 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]
   ```

이 시나리오에는 Amazon Q 생성형 SQL과 상호 작용하는 몇 가지 기본 방법만 나와 있습니다. 이 생성형 AI 기술을 더 다양하게 실험하여 데이터베이스 쿼리를 위한 SQL 작성을 시작해 볼 수 있습니다.