AlteryxでAmazon Auroraと接続

# はじめに

Alteryxで、色々なデータソースとつないでみています。

https://qiita.com/a_b_/items/4c58e6bf7f4761273b36

https://qiita.com/a_b_/items/7c9243b5aa9ab6c7bbc2

https://qiita.com/a_b_/items/83e900dcd4dd89a270b7

今回はAWSのAmazon Auroraと接続してみました。
Alteryx上ではAuroraは他データソースと別扱いになっていますが、前回のRDSと変わらない使用感でした。

# Amazon Aurora
## 環境構築

### VPC
前回のRDSと同じものを使います。

https://qiita.com/a_b_/items/83e900dcd4dd89a270b7

### 作成
標準作成を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/81650f8b-f17c-9cb3-6984-8af5476ed88a.png)
MySQLのAuroraを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/98398a3a-0a24-4d3f-9c0a-ac7172574bf6.png)
お試し用なので、開発/テストを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/deb58511-cfbf-fc51-fcde-6c8e51963932.png)

識別子やユーザ名、パスワードを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/d8dee0b3-0bf2-63a1-168f-f40a92fe8a16.png)


最安価のインスタンスで作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/544b619d-3296-6ef8-9b25-e2a1a1fa8a4d.png)

前回作ったVPCとサブネット、セキュリティグループを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/5a2753f5-4d8d-fa7e-93c4-92dcd3faab90.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/91b1e1f4-d8da-f9a4-accd-dcf7fe94ed89.png)

認証やモニタリングは不要としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/eacc3a40-327d-b722-3ab3-93c3f4d05e82.png)

追加設定を開いて、データベースも作ってもらいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/95d8b78d-b5b9-f31e-aa59-40ccc10c25d0.png)

各種設定は不要としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/ff70e2a9-dc9e-f8a4-a0f6-82fb7087db92.png)

設定画面の下部までスクロールし、作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/d7da04b5-33ab-5623-011b-6e736f35e1fd.png)

作成されたデータベースのエンドポイントのうち、ライターインスタンスを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/e1adaade-1cc6-e1b4-45ea-bc0df37dbb66.png)

### ODBC設定
前回インストールしたMySQLのドライバーで設定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/4c60c39f-43c9-0c91-93ac-a12457b70bb7.png)


### セキュリティグループ修正
CloudShellから操作したいので、CloudShellのIPを調べて、セキュリティグループのインバウンドルールに設定します。以下のページを参考にしました。

https://dev.classmethod.jp/articles/aws-cloudshell-ssh-to-ec2-instance/#toc-2

```bash
$ curl https://ifconfig.io
```
上記コマンドで表示されたIPを、使用しているセキュリティグループのインバウンドルールに追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/9965ddbc-d33d-c2a5-c111-6990ec8ce057.png)

設定できれば、CloudShellから以下のコマンドで入れます。
```bash
$ mysql \
 -h <ライターインスタンスのエンドポイントを指定> \
 -P 3306 \
 -u admin -p
Enter password:
```

### CREATE TABLE

以下コマンドで、テーブル・初期データを作ります。
```sql
use alteryx;

CREATE TABLE alteryx.hoshiiro2_cast
(
	 `話数`	varchar(100)
	,`パート`	varchar(100)
	,`ポプ子`	varchar(100)
	,`ピピ美`	varchar(100)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
;


INSERT INTO alteryx.hoshiiro2_cast VALUES
('第1話','前半','平野綾','茅原実里'),
('第1話','後半','井上和彦','堀川りょう'),
('第2話','前半','朴璐美','釘宮理恵'),
('第2話','後半','檜山修之','森川智之'),
('第3話','前半','大谷育江','犬山イヌコ'),
('第3話','後半','榎木淳弥','内田雄馬')
;

select * from alteryx.hoshiiro2_cast
;
```

## 入力
Alteryxでデータ入力ツールをドロップし、データ接続-データソースに、`Amazon Aurora`を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/e3693e86-f421-29bf-0756-c9e918351869.png)

データソース名・ユーザー名・パスワードを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/478e3d49-b4ba-71ee-2925-e506a675556a.png)

表示されるビジュアルクエリエディタ等で、クエリを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/22a3399c-b0e8-e56f-2698-01d50088919e.png)

閲覧ツールと繋げて実行して、結果を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/42055c83-38ab-dda9-a582-0c164bf849c1.png)

データソースで`Amazon Aurora`として独立した設定に見えますが、MySQLでの接続と同じもののようです。

## 出力
以下のCSVをAlteryxで取り込みます。
```
話数,パート,ポプ子,ピピ美
第4話,前半,潘めぐみ,伊瀬茉莉也
第4話,後半,石丸博也,水島裕
```

出力ツールをドロップし、データソースに`Amazon Aurora`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/ce3b4da4-9a89-dc74-7fd7-9bf2f11e6dfb.png)

入力と同じようにODBCの設定を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/f5b96691-6abc-4528-e4bc-196eea9849f6.png)

テーブル名の指定には、作成したテーブルを指定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/25f322f0-1c10-e42a-bcfa-3294437ef40b.png)

前回のMySQLの時と同様、出力オプションがいくつかあります。
「既存のものを付加する」から試してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/6c4a9c01-6c34-6730-e0c4-49efa651225c.png)
データが挿入されています。
```
select * from alteryx.hoshiiro2_cast;
+---------+-----------+--------------+-----------------+
| 話数    | パート    | ポプ子       | ピピ美          |
+---------+-----------+--------------+-----------------+
| 第1話   | 前半      | 平野綾       | 茅原実里        |
| 第1話   | 後半      | 井上和彦     | 堀川りょう      |
| 第2話   | 前半      | 朴璐美       | 釘宮理恵        |
| 第2話   | 後半      | 檜山修之     | 森川智之        |
| 第3話   | 前半      | 大谷育江     | 犬山イヌコ      |
| 第3話   | 後半      | 榎木淳弥     | 内田雄馬        |
| 第4話   | 前半      | 潘めぐみ     | 伊瀬茉莉也      |
| 第4話   | 後半      | 石丸博也     | 水島裕          |
+---------+-----------+--------------+-----------------+
8 rows in set (0.00 sec)
```

次に、出力オプションを「データを削除して付加する」で実行しました。
前回と同様、既に入っていたものは無くなって、取り込みデータが入りました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/3791238b-5cb0-a56e-cd73-628b5ac773c5.png)
```
select * from alteryx.hoshiiro2_cast;
+---------+-----------+--------------+-----------------+
| 話数    | パート    | ポプ子       | ピピ美          |
+---------+-----------+--------------+-----------------+
| 第4話   | 前半      | 潘めぐみ     | 伊瀬茉莉也      |
| 第4話   | 後半      | 石丸博也     | 水島裕          |
+---------+-----------+--------------+-----------------+
2 rows in set (0.00 sec)
```
「テーブルを上書きする(ドロップ)」も前回と同様、テーブル定義が変わっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/62a9c928-07a0-d4d1-bd9f-f40b3a4a7221.png)
```
MySQL [alteryx]> select * from alteryx.hoshiiro2_cast;
+---------+-----------+--------------+-----------------+
| 話数    | パート    | ポプ子       | ピピ美          |
+---------+-----------+--------------+-----------------+
| 第4話   | 前半      | 潘めぐみ     | 伊瀬茉莉也      |
| 第4話   | 後半      | 石丸博也     | 水島裕          |
+---------+-----------+--------------+-----------------+
2 rows in set (0.00 sec)

MySQL [alteryx]> show create table hoshiiro2_cast;
+----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table          | Create Table                                                                                                                                                                                                                                                                                                       |
+----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| hoshiiro2_cast | CREATE TABLE `hoshiiro2_cast` (
  `話数` varchar(254) CHARACTER SET utf8 DEFAULT NULL,
  `パート` varchar(254) CHARACTER SET utf8 DEFAULT NULL,
  `ポプ子` varchar(254) CHARACTER SET utf8 DEFAULT NULL,
  `ピピ美` varchar(254) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1            |
+----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
```
「新しいテーブルを作成する」も、結果は既にテーブルが存在するため、同様にエラーになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/2cdb590d-f1b3-5046-29c7-05a24690e9d2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/762fcb2d-31ff-6fed-8551-5fea5e445867.png)

# おわりに

今回はAlteryxとAmazon Auroraをつないでみました。
Alteryx上でデータソースを指定する際、MySQLと別になっていたのですが、使用してみると変わらない印象でした。
AuroraでもMySQLでも、Alteryxからは意識せず使えるようなので、この点で選択肢が狭まることはなさそうです。