DataZone に Redshift のテーブルを連携してみた

# はじめに

[前回の記事](https://qiita.com/sugimount-a/items/5578949e5b3f00620e0c)で、DataZone の QuickStart を実行しました。前回は S3 にデータを格納して、Athena 経由でクエリーを行う内容を確認しました。DataZone は、Redshift とも連携機能があるので、この記事で Redshift との連携を確認してみます。



# Redshift Provisioned を用意

Redshift の Provisioned cluster を用意します。

![image-20230703000202027.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/02edbbd7-fc81-3ebc-8b4e-88f87559397c.png)



Redshift に接続します。

```
psql \
-h redshift-cluster-1.chigetqqkdgx.us-east-1.redshift.amazonaws.com \
-p 5439 \
-U awsuser \
-d tpch_3tb
```



次のように、 TPC-H の 8テーブルを準備しました。

- tpch_3tb データベース
- public スキーマ

```
tpch_3tb=# \dt
          List of relations
 schema |   name   | type  |  owner
--------+----------+-------+---------
 public | customer | table | awsuser
 public | lineitem | table | awsuser
 public | nation   | table | awsuser
 public | orders   | table | awsuser
 public | part     | table | awsuser
 public | partsupp | table | awsuser
 public | region   | table | awsuser
 public | supplier | table | awsuser
(8 rows)
```



# DataZone のデータソースに Redshift を追加

DataZone に Redshift を連携させます。

![image-20230703011959759.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5021ff8f-0f62-ee09-1832-ec5b605e19ef.png)



Data source のタブで Create data source を選択します。

![image-20230703012023371.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9e1b54ea-ffea-6475-0308-82d93793c263.png)



適当に名前を指定して、連携したい DataZone 上の Domain を指定します。

![image-20230703012427442.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/435590d1-c59a-7a39-7980-a9ff8bed590e.png)



Redshift 上の Database `tpch_3tb` を指定します。

![image-20230703012622648.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3f502fb1-b5b9-23c6-edbe-c2b92e820bed.png)



このあたりの IAM Role はよくわからないので、自動生成に任せます。

![image-20230703013051769.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/49e08ca7-42bc-b477-12b3-cf45de4a32fa.png)



対象の Project を指定して、Create を押します。

![image-20230703013339914.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4ec2e917-b172-aff9-ecd4-9c494b7f1807.png)



一見、Data source には何も追加されていないように見えますが、Filter domain を選択します。

![image-20230703013831391.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ae939019-d8bc-d3fc-3307-0c9b478d3273.png)



IT ドメインを指定します。

![image-20230703014041029.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b6985b1c-d6eb-3c6d-c96d-8d0344ec0925.png)



Redshift Cluster が登録されていることを確認しました。

![image-20230703014104488.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/d721c45b-0028-8e62-fa5d-d3dbf814f9e6.png)



# IT Project 上で Redshift のデータを Publish

DataZone の IT Project 上で Publish Data を押して、Redshift のデータをデータカタログに公開します。

![image-20230703014507821.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/97216507-ef26-7805-0f96-5162509775ec.png)



適当に Job の名前を入れます。

![image-20230703014609351.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ef3749db-defb-5d60-255f-25e9d638aaf5.png)



Data Source で Redshift が選択できるようになっています。`redshift-cluster` を選択します。

![image-20230703014648643.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4d9569e3-3923-7feb-ef09-3730f53a9731.png)



Redshift 上のスキーマを指定します。`public` スキーマを指定します。

![image-20230703015713480.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8bfc9b92-bc25-ba85-45d3-953772e7cefa.png)



Run once を選択して、Create を押します。

![image-20230703014752560.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/01681700-403e-da3e-0dfa-5ada7549e097.png)



REQUESTED になりました。

![image-20230703014806057.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c7f0cc84-09b5-dec7-ab58-bde959e07e5c.png)



一定時間後、SUCCESS に変わり、Redshift 上の 8 テーブルが追加されました。　

![image-20230703021357744.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/bb662097-5a94-aa6c-ebd4-01c0e24aed5e.png)



Glue DataCatalog 上にも自動的に Database が作成され、Table が追加されています

![image-20230703021536974.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/17856de9-f30e-15cb-a5a8-5ec540a21964.png)



Draft として 8 テーブルが認識されています。

![image-20230703022129789.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/42f9ee64-d57f-9607-511a-0773d66bc626.png)



日本語のメタデータを入力するため、適当にテーブルを選択します。

![image-20230703022413875.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6c19b65f-de88-4831-8d6f-6c306a26bc17.png)



Edit を押します。

![image-20230703022444466.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/27e24163-5a2d-4f51-7009-68f3577dd01e.png)



テーブル名のわかりやすい名前をいれます。

![image-20230703022514010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/efa11c2c-11f5-a939-e808-2ca0698ce017.png)



スキーマ情報も自動認識されています。

![image-20230703022622364.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/50b3c8a5-8d3f-4a99-4629-e3fddc07a8f7.png)



日本語の説明を入れて、Active に変更します。

![image-20230703022944850.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fb3072e4-71f7-5a6f-8816-116a80f86d68.png)



# データカタログで検索

DataZone の検索ボックスで、「顧客」を検索します。

![image-20230703023130469.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8c0afa46-1d22-9900-c898-c40801848ab8.png)



このカタログ上では、Redshift Cluster の名前や、テーブル名がわかります。

![image-20230703023248893.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f7eaad85-77d8-a0d2-7291-fb1818cab5b1.png)



スキーマ情報もわかります。

![image-20230703024149956.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/31af09fe-289d-9e2d-2991-1b0c9ad0b62e.png)



# (動作しなかった)サブスクライブ

この Redshift のデータをサブスクライブができます。

![image-20230703024227880.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/bab83e81-b855-202f-d889-d6aa89872bcd.png)



サブスクライブします。

![image-20230703024258329.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/d03af8c3-b39b-76e3-6375-36fb005366cd.png)



管理者アカウントに申請がきています。

![image-20230703024512645.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/2b47dbc4-bc0a-fdca-2bad-c8c464bc66e5.png)



承認します。

![image-20230703024550913.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/2f1487bf-d02e-79c1-a7ab-dd209232a0de.png)



Not granted となっていました。

![image-20230703024735099.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/cc20e47d-5f82-a1c7-40ef-78e0d8269497.png)



Athena 上でも出てこない。

![image-20230703024906804.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5a3642f6-9f7f-9fca-6090-1f4ccf63da0e.png)



ちなみに、AWS Document 上では、Redshift でもクエリーができるようでした。この辺りは今後確認します。

https://docs.aws.amazon.com/ja_jp/datazone/latest/userguide/query-athena-with-deep-link-in-project.html#query-redshift-with-deep-link