Alteryxでクラウドストレージと接続

# はじめに
Alteryxを使える機会があるので、各種クラウドストレージと接続してみました。

## Alteryxとは
簡単に言うと、コードを書かなくても、処理をつなげるだけでデータ加工ができるサービス、です。
詳細は以下のページ等を確認ください。

https://data-viz-lab.com/alteryx

公式に各種コネクタがあります。

https://help.alteryx.com/ja/taxonomy/term/76

# 概要
試せたのは以下になります。
- AWS
    - S3:デフォルトで接続ツールが組み込まれている
- Google
    - GoogleDrive:接続ツールが配布されている
    - Googleスプレッドシート:接続ツールが配布されている

試せなかった、うまくいかなかったのは以下になります。
- GCP
    - GCS:接続ツールなしのため、未検証
- Microsoft365
    - SharePoint:接続ツールは配布されているが、内部エラーで接続できず
    - OneDrive:同上




# S3と接続

## 準備
環境として以下を作成しました。
- バケット作成
- ユーザー作成
- アクセスキー作成
- データアップ

CFnでバケットとユーザを作成します。
```yaml
AWSTemplateFormatVersion: 2010-09-09

Resources:
  TargetBucket:
    Type: AWS::S3::Bucket

  AlteryxUser:
    Type: AWS::IAM::User
    Properties:
      Policies:
       -  PolicyName: S3Access
          PolicyDocument:
            Version: 2012-10-17
            Statement:
             -  Effect: Allow
                Action: 
                 - s3:ListAllMyBuckets
                Resource:
                 - !Sub arn:aws:s3:::*
             -  Effect: Allow
                Action: 
                 - s3:ListBucket
                Resource:
                 - !Sub arn:aws:s3:::${TargetBucket}
             -  Effect: Allow
                Action: 
                 - s3:*Object
                Resource:
                 - !Sub arn:aws:s3:::${TargetBucket}/*

Outputs:
    BucketArn:
        Value: !GetAtt TargetBucket.Arn
```
作成したユーザのアクセスキーを取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/b40aae2a-b765-73b2-46ec-2b35c0c78246.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/95d95a0a-19a3-ccbb-290f-4c455d7d323c.png)

データは以下CSVファイルを作成し、S3にアップしました。
```csv:hoshiiro1_cast.csv
話数,パート,ポプ子,ピピ美
第1話,前半,江原正士,大塚芳忠
第1話,後半,三ツ矢雄二,日髙のり子
第2話,前半,悠木碧,竹達彩奈
第2話,後半,古川登志夫,千葉繁
第3話,前半,小松未可子,上坂すみれ
第3話,後半,中尾隆聖,若本規夫
第4話,前半,日笠陽子,佐藤聡美
第4話,後半,玄田哲章,神谷明
第5話,前半,金田朋子,小林ゆう
第5話,後半,中村悠一,杉田智和
第6話,前半,三瓶由布子,名塚佳織
第6話,後半,下野紘,梶裕貴
第7話,前半,こおろぎさとみ,矢島晶子
第7話,後半,森久保祥太郎,鳥海浩輔
第8話,前半,諸星すみれ,田所あずさ
第8話,後半,小野坂昌也,浪川大輔
第9話,前半,中村繪里子,今井麻美
第9話,後半,斉藤壮馬,石川界人
第10話,前半,徳井青空,三森すずこ
第10話,後半,小山力也,高木渉
第11話,前半,水樹奈々,能登麻美子
第11話,後半,郷田ほづみ,銀河万丈
第12話,前半,小山茉美,三石琴乃
第12話,後半,速水奨,中田譲治
```

保存場所は`s3://バケット名/download/`以下としました。

## ダウンロード

公式のツールを使います。Alteryxに組み込み済みでした。

https://help.alteryx.com/ja/20221/designer/amazon-s3-download-tool


コネクタタブのツールをドラッグアンドドロップします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/fb7b220d-5ad6-b50d-04d3-1dc058832032.png)

ツールのプロパティですが、AWS シークレットキーの項目が隠れてしまっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/be7e8a2e-a3ec-1a62-e2fc-f38d7c253f29.png)

入力欄は存在するので、AWSアクセスキーにフォーカスして、Tabキーを押して遷移しました。

それぞれ入力欄に以下の様に指定しました。

- AWSアクセスキー：作成したIAMユーザーのアクセスキー
- AWS シークレットキー（画面上はAWS秘密キー？）：作成したIAMユーザーのシークレットアクセスキー
    - 隠れてしまっているので、AWSアクセスキーをフォーカスし、Tabキーで遷移
    - <b>現在の AWS 認証情報をデフォルトとして保存する</b>がリンク状態になりますので、クリックして有効にしておきます。
- エンドポイント：作成したリージョンのエンドポイントを選択
- [チェック]認証に署名 V4 を使用する：OFF
- バケット名：対象のバケットを選択
    - 接続設定が正しければ、右の参照ボタンからバケット一覧が表示され、そこから選択できます
- オブジェクト名：対象のファイルのキーを指定
    - ここまでの設定が正しければ、右の参照ボタンからオブジェクト一覧が表示され、そこから選択できます
        - エンドポイントに設定したリージョンが正しくない場合はエラーになり、一覧が表示されません

設定後の画面は以下の様になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/926e4b64-3e4b-fca6-c804-ed2a0ea20768.png)


ワークフローに閲覧ツールを接続して、実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/fc0181ee-a172-516d-6737-075c7613a284.png)

問題なく取得できれば、結果ウィンドウに取得内容が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/e107d538-36a6-2592-5520-dc935cbf2296.png)


## アップロード

こちらも公式のツールを使います。Alteryxに組み込み済みでした。

https://help.alteryx.com/ja/20221/designer/amazon-s3-upload-tool

ツールを配置する前に、入力用に適当なデータを作成します。
テキスト入力で、Alteryx上に直に作成しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/e79ca217-4fe7-cdca-5a7c-57c54fe8fab3.png)

次にアップロードツールをドラッグアンドドロップします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/6f4e0179-6d47-64a2-62c9-32f91f228c64.png)

相変わらず、シークレットキーは隠れていました。
ですが、入力時に保存していた資格情報がそのままセットされているようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/d35a70c6-d5b6-7401-6539-4e9d8ef05b4e.png)

入力項目は、ほぼ先ほどと似たようなものです。

- オブジェクト名：ファイルのキーを指定
    - 右の参照からファイル一覧が表示されます
    - 存在しない場合は直に入力します

以下のように設定しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/ebcc1ad5-9a2b-b702-55d0-93460a0af0b3.png)


後はテキスト入力と繋げて実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/68a096ba-83fa-cb17-4733-5d0e0d8ef59f.png)

S3にアップロードされました。2回実行しても（ファイルが存在しても）エラーも無く実行できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/75e26ac5-3b52-e869-cea2-90ecd61e8c31.png)



# GoogleDriveと接続

デフォルトでは入っていなかったので、ツールのダウンロードが必要です。

https://community.alteryx.com/t5/Public-Community-Gallery/Google-Drive-Tools/ta-p/898151

ダウンロードとインストールの方法は、以下を参考にしました。
インストールには結構時間がかかります。自分の場合は5分くらいかかりました。

https://dev.classmethod.jp/articles/alteryx-analytics-tool-install/

インストール後、コネクタのタブに2つ追加されていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/9d7065ea-507c-61d1-2426-3ec1e2fa0615.png)

## インプット
S3と同じデータを以下の様に格納しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/cdfb9d0f-99e5-85e4-62aa-663e5de55a29.png)


以下のページを参考にやりました。

https://dev.classmethod.jp/articles/googledrive-input-tool-jp/

接続は以下の3つがあるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/4f54f4c9-81d8-8fbf-4436-0c9a7dc86790.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/7023a7af-f2c8-0909-9505-e05534f04b4f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/3a319f41-25a2-1223-005f-786182a33fe5.png)

一つ目の、ブラウザのサインインを使う形で試してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/ea84a7e4-921c-2e77-299c-c5d87a4b7b08.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/2a829166-03eb-70a8-1e41-f3641f2d98b6.png)
一度失敗しましたが（恐らくタイムアウト）、再度やり直して以下のような画面になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/45d3bc96-6ee9-1be8-d04d-51c441922505.png)

その後、ツールのプロパティにドライブ内の情報が表示されるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/8dcc5b79-7eea-b6bd-d499-d82db246446c.png)

下部のエクスプローラー風のUIを操作して、対象のファイルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/fcea5cea-e137-719a-ac52-044432f429eb.png)

閲覧ツールと繋げて実行、しましたが取り込まれませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/3e990f2c-cf55-be4c-20b1-79be28abdf78.png)

オプションを色々見てみたところ、以下の設定でうまくいきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/2fc94d26-01e2-0583-0619-f057a2568ef8.png)

閲覧ツールから取り込めた内容を確認できます。（一部文字化けしています）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/1ad8895f-3686-1cec-d850-bc2b27573af7.png)


## アウトプット

S3のときと同じデータをインプットとしてワークフロー上に用意し、GoogleDrive Outputツールと接続します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/f7c1a514-dc1a-3313-af2c-20b829178058.png)

アウトプットは2種類の接続方法があるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/8be5fa6e-ebc3-8da7-8956-0c511abc2930.png)

インプットと同じ方法で接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/27a74ac6-2e37-713c-7d29-f973a5f9c37e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/d516041d-5a9d-a415-bb69-539e513bce23.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/07efd3c9-6e77-6b25-d809-ac6b19add379.png)

インプットと似たようなプロパティに変化しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/38498396-486b-42d7-eb10-a6b930d19ad1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/da9703bc-8cd5-5b49-d0be-080ac87fbd12.png)
対象のフォルダを選択して、Add Fileをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/02063b0a-c3e7-038f-2694-46c007f6d8a2.png)
以下の様になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/68bfb2ca-5a02-4e73-853e-c89faa628135.png)
オプションは以下の様に、上書きにしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/8f77cecb-6282-da76-9a1c-00302bd85d4c.png)

実行すると、GoogleDrive上にファイルができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/49439153-4d57-01ce-c268-f005330aa7c5.png)
中身もちゃんと見れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/e1edf2b6-e3b8-09a4-6999-80dff1122f2c.png)

2回目を流すと最終更新が変更されましたので、ちゃんと上書きされているようです。

# Googleスプレッドシートと接続
以下を参考にしました。

https://blog.truestar.co.jp/alteryx/20201202/40785/

こちらもデフォルトでは入っていなかったので、ツールをダウンロードしました。

https://community.alteryx.com/t5/Public-Community-Gallery/Google-Sheets-Tools/ta-p/877888

先と同様にインストールしました。今度はポップアップも何も出ずすぐ完了したようで、アイコンが追加されていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/1dbff032-654f-85fa-c48c-3c631ac5f800.png)



## 入力
データは、先のデータをスプレッドシートにしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/7528f841-1c31-116f-764e-219c2b7166e8.png)

入力ツールをドロップしてプロパティ画面を見てみると、Driveとは違っていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/756fb77f-c5f6-9592-9fdc-9e772e1715da.png)

ですが接続に行う手順は同様のものでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/be01796f-fc0f-834e-8b16-929a88f23868.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/4c39dae3-541b-94bb-4c5e-6695d0102469.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/c1bf791b-c958-44a0-d121-35bc3254dfd1.png)

接続がうまくいくと、以下のようなプロパティになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/0480ad16-43e2-076f-2d10-e613abfe7b83.png)
対象のファイルを選択するのですが、ファイル名のみでパスが表示されません。
そのため、別フォルダに同名ファイルがある場合は、区別がつきません。

ファイルを選択してして次へ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/5ac23f44-f297-d602-c970-9bc2641ade06.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/ba50753d-ab9c-5b9e-681e-62a2d0a4951e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/e25c3471-84ac-7d19-ad59-99eca8dae960.png)

設定できましたので、閲覧ツールと繋げて実行し、取得データを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/16e7405b-94d5-e095-0421-4f7b541938b7.png)


## 出力
出力ツールの最初のプロパティ画面は以下のようになっていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/dd72d592-fda1-570c-4eeb-3a4928024fc8.png)

承認画面も同じだったので割愛。

接続後のプロパティ画面は以下のようになっていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/c7e1b42e-54ce-e3ea-adfa-6dce5f3cb360.png)

何度も実行することを想定して、ファイルがない状態ですが「スプレッドシートを上書き（削除）」を選択しました。
ですが、セレクトボックスで選択するようで、既にあるファイルからしか選択できません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/32e55021-083f-c503-12a4-1dae9323c107.png)

改めて「新しいスプレッドシートを作成する」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/91c91704-42fd-9459-ac1f-4de1878ad273.png)

フォルダ等を選ぶ場所もなく、設定完了してしまいました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/02a5d22c-5510-70a9-cc75-a3010461bbaa.png)

実行すると、トップのフォルダに出力されていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/5117bde5-e0e4-c508-bd51-77fa26b86343.png)

もう一度動かすと、同名のファイルがもう一個できてました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/78df2d31-ec94-f882-746d-895dacd70747.png)

また、書き込みオプションを上書きにしようとすると以下の様にエラーになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/02a5b57d-ebf1-dfbd-e202-4c97060a5571.png)

そのため、上書き用に新しく出力ツールをドロップしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/48a79872-1bdb-ef28-6fed-bc22b1812885.png)

ただ、同名のスプレッドシートが複数ある場合、上書き先のスプレッドシートを選択するリストが以下の様になり、どれがどれだかわからない状態でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/a0aa6c90-d721-c01c-b298-6b636d88b317.png)

なのでスプレッドシート名をアカウントで一意にし、対象のフォルダに移動して、設定を続けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/cb06fd15-9aa2-5815-c6ac-2cd8a7e0e393.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/06e5ad92-42ca-122b-96d6-224bee9bae63.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/0708fc42-eea2-ceca-d385-23d8e079524d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/600a8c84-719d-8102-21f4-34664fa41821.png)

今度は何回実行しても、ファイルは増えることなく1つのままでした。（ただし最終更新の時間がブラウザ上に反映されるまで少しかかりました。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/8cb2eeb9-763a-7d25-f59d-ae0c8ea73e9b.png)

# うまくいかなかったもの
以下二つについては、配布ツールがありましたがうまくいきませんでした。
- SharePoint
- OneDrive

それぞれのツールのリンクは以下になります。

https://community.alteryx.com/t5/Public-Community-Gallery/Sharepoint-Tools/ta-p/877903

https://community.alteryx.com/t5/Public-Community-Gallery/OneDrive-Tools/ta-p/877893

以下はSharePointで試した際の画面になります。
（うまくいかなかったので、非表示にしておきます）

<details><summary>クリックで表示</summary><div>

ツールをインストールすると、ポップアップなしで完了し、以下の様に追加されていました。（間にあるSharePointのリスト入力とリスト出力というのは、最初から入っていました。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/177c9a02-4242-26b7-968b-70af13731a59.png)

## 入力
プロパティは以下の様になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/be4987fc-69a7-0347-a32a-9aad6cde166b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/2eceb492-c474-2502-a5d6-5a98c67c4594.png)
接続は2種類でクライアントID等を入れる場合は以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/f3385697-068a-a6c7-44cc-f3d9a9a66519.png)

"ファイル”と”インターネットブラウザからサインイン”の方で接続して見ました。GoogleDriveと同様、認証画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/dc089b3a-bb6f-6dd2-c448-588d8b4ce416.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/ac65db70-3b11-a904-14e9-794d1233633b.png)
その後、プロパティ画面が以下の様に変わりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/cc1002cf-62ec-ee31-0fb3-e0581ea765c3.png)

サイト、ドキュメントライブラリと選択していくと、ファイル選択の画面になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/8ea47837-3dec-8cf4-d343-a2b26ececd2a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/200199de-52c6-cae7-055c-f7946dfe212c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/59726c1d-7e14-f699-be71-481cfd86144e.png)

階層を掘っていってファイルを選ぶと以下の様になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/fe8439e5-ab48-5751-cbaa-3520342e2c67.png)

後は閲覧ツールと繋げて実行したのですが、以下のようなエラーが出て、ファイルが取得できませんでした。
![Clipboard - 2022年10月6日午前11時8分.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553680/bedad2a3-4dcc-e314-3d64-65e5bdc8d198.png)

</div></details>

Alteryxのバージョンの問題かもしれません。
わかる方いらっしゃいましたら教えてください。

# おわりに
便利なデータ加工ツールであるAlteryxと、クラウドストレージとの接続方法を確認してみました。

Microsoft365のサービスとつなぐ方法がうまくできなかったのは残念ですが、クラウドとの接続も簡単にできることがわかり、今後の業務に活かせそうです。