【2024/09アップデート】Redshiftで、Amazon Qを利用したクエリ自動作成が使えるようになりました

# はじめに
株式会社ジールの @oreo_tです。
2024/9/17のアップデートで、RedshiftでAmazon Qを利用したクエリ生成ができるようになりましたので紹介しようと思います。
「こういうデータが見たい」というのを言葉で書くことによって、その内容に合わせてAmazon QがRedshiftで実行できるクエリを生成してくれるというものです。
以下、公式情報のリンクです。
https://aws.amazon.com/about-aws/whats-new/2024/09/amazon-q-generative-sql-amazon-redshift/

# 設定方法
まずAWSのコンソールからRedshiftの画面を開き、「クエリエディタv2」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/05db154d-26eb-46da-6e97-9c32b3182873.png)

クエリエディタの画面が開けたら、左のメニューから歯車のアイコンを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/2eeb173c-bbff-fe81-b43b-56bcfa26e59d.png)

「Q generative SQL settings」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/d6408e22-d178-c711-cd28-cdf6193120aa.png)

「Q generative SQL」にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/84b2e72d-5a73-6d21-b620-b8db1eccc495.png)

他の設定は特に必要なく、月に1000プロンプト(1000応答)までは無料枠を利用できるようです。
利用状況はこの画面でいつでも確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/862e3f22-23c2-c163-bbed-a319edac3b19.png)

最後に設定画面の一番下まで行き、「Save」をクリックします。これでAmazon Qを利用できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/37a9fcf0-cdf6-cd51-ce2e-d76639031b9b.png)

# 利用方法
エディタからノートブックを開き、右上の六角形のアイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/57d1f0e5-f9d7-e4f2-62e6-1d4d6fa60715.png)

画面の右に対話画面が出てきました。Amazon Qを利用した対話はこの画面を使って行います。
ちなみに、公式発表では英語にしか対応していないと書いてあったのですが、今回日本語で質問をしてもきちんと回答が返ってきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/de928566-46c8-5b4f-dad9-b7a409e0daf1.png)

https://www.nstac.go.jp/use/literacy/ssdse/
こちらのサイトからお借りした統計データを使ったテーブルでクエリ生成を試します。
全国1741市区町村ごとの人口や各種事業所数などが128項目に渡ってまとめられています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/6eef2614-de3b-1bb5-9d1e-8f1c724cd08b.png)


統計データを「Load Data」でアップロードし、その際にRedshiftの機能でテーブルを新規作成してそこにデータを入れます。
***
### 検証①
まずはこのテーブルで市区町村を人口順に並べるようなクエリを書いてもらおうと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/360b27d3-07f5-3643-b7a0-e92234220ce8.png)

結果が返ってきました。狭いのでクエリエディタにコピー&ペーストで持ってきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/6c043fbe-4c55-fbcc-242a-eee3f4b6b45e.png)

この通り、指定した内容のクエリを生成してくれています。
そして実行するときちんと動きましたね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/a9d2e530-b538-d778-af7c-fa70ae83b3d9.png)
***
### 検証②
次にもう少し複雑なクエリを作ってみたいと思います。
市区町村を都道府県ごとに集約し、人口に対する医師の数が少ない都道府県を5つ並べてもらいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/9b6eaf4a-2ca4-a13a-450d-93309f0afccc.png)

こちらが生成結果です。GROUP BYを使った集約やSUMを使った計算、新しくできる列の名前付けなども問題なくできています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/2b7add98-4531-1e32-63fa-aebda0df1f73.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/928c62b7-82ae-dcca-4e73-85d43a7d9382.png)
***
### 検証③
次に、テーブルの結合を含むクエリの生成を試してみます。
先ほどのstatisticsテーブルは2024年のデータを使っていましたが、2019年のデータを使った別テーブルを作成して結合してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/054e90e3-4c30-1133-9feb-0c91e67f9a1a.png)

この通り、テーブルを結合した上で両テーブルを利用した計算もやってくれました。
都道府県や市区町村のカラムは2024年のテーブルだけ、外国人人口のカラムは両テーブルのものを並べてくれているのがクエリの書き方としてきれいだと感じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/144d23ad-8687-6742-fdcd-840957cfc1af.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/92ddbec5-7858-673d-f19c-e26d4a835250.png)
***
### 検証④
最後に、エンジニアでない方が使用することを想定して検証③の内容を結合条件などを書かない質問でやってみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/23ca3cb7-6238-b381-b296-3fcc8638ebdd.png)

このように、想定していたキーとは違いましたが同じような結果が出ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2197572/a2cab05c-96b5-cb04-6865-d98c1cf5d3b7.png)


# まとめ
Amazon Qを利用すれば実用的なクエリを書けることが分かりました。
今回紹介した範囲はまだ簡単な方でしたが、開発者の方が複雑なクエリを生成するための助けになったり、あるいはSQLなどの知識があまりない方でもRedshiftを活用できるようになるかもしれません。
皆様もぜひご活用ください。

***
株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください：

https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area