

 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 Database デベロッパーガイド」の「[サンプルデータベース](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)」を参照してください。TICKIT データは、Amazon Redshift コンソールとクエリエディタ v2 の両方を使用して、さまざまな方法でデータベースにロードできます。クエリエディタ v2 には、TICKIT データを `sample_data_dev` データベースにロードする方法が提供されています。詳細については、「[データベースにデータをロードする](query-editor-v2-loading.md)」を参照してください。クエリエディタ v2 には、TICKIT データのサンプルプロンプトも提供されています。次のシナリオでは、TICKIT サンプルデータに関する SQL を生成するための生成 SQL との会話について説明します。このシナリオでは、TICKIT サンプルデータは Amazon Redshift クラスターの `dev` データベースに既に作成されています。

**注記**  
この例は、会話を説明する目的で提供されています。生成 SQL からの応答は、同じプロンプトを使用した場合の結果と一致するとは限りません。

**Amazon Q 生成 SQL を使用した会話の例**

1. **[エディタ]** で、TICKIT サンプルデータがあるクラスターまたはワークグループに接続します。

1. 空のノートブックを作成して、![\[Generative SQL\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-amazon-q.png) 生成 SQL アイコンをクリックし、チャットパネルを開きます。

1. 次のプロンプトを入力して SQL を生成し、`VENUE` テーブルのレコード件数を確認します。

   ```
   How many venues are there?
   ```

   ```
   SELECT
     COUNT(*) AS num_venues
   FROM
     tickit.venue
   ```

   **[Add to notebook]** をクリックして、開いているノートブックにセルを 2 つ追加します。Markdown セルの 1 つに「会場はいくつありますか?」と入力します。もう 1 つのセルには生成された SQL が入力されます。

   SQL セルで **[実行する]** をクリックすると、次のとおり結果が表示されます。

   ```
   count
   ------
   202
   ```

1. 別のバージョンの SQL をリクエストするには、**[Regenerate SQL]** をクリックすると、次のとおりの回答が表示されます。

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

   **[Add to notebook]** をクリックして、開いているノートブックにセルをさらに 2 つ追加します。Markdown セルの 1 つに「会場はいくつありますか?」と入力します。もう 1 つのセルには生成された SQL が入力されます。

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

   **[Add to notebook]** をクリックして、開いているノートブックにセルを 2 つ追加します。Markdown セルの 1 つに「2008 年 11 月の売上数は」と入力します。もう 1 つのセルには生成された SQL が入力されます。

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

   **[Add to notebook]** をクリックして開いているノートブックにセルを 2 つ追加して、この SQL を実行すると、SQL は失敗します。

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

このシナリオでは、Amazon Q 生成 SQL を利用する際の基本的な方法の一部のみを説明しています。生成 AI テクノロジーをさらに試して、データベースにクエリを実行する SQL の作成を開始するうえで役に立ちます。