Forms で受け取ったデータを Azure Machine Learning に使用可能なデータにノーコードで変換する方法

# Microsoft Forms

これいいですよねー
入力フォームを簡単に作れて、Excelにデータエクスポートできるし
簡単なダッシュボードも見れる！
アンケートとか情報収集にピッタリ！

まぁそんな Microsoft Forms ですが
Microsoft製ということもあって
ノーコードで自動化を行うことができる
Power Automate / LogicApps と簡単に連携できます！

# 用意するもの

* Microsoft Forms
* Power Automate (1日あたりの処理件数が多い場合はLogicAppsがおすすめ)
* Storage Account

# Azure Machine Learning で使用可能なデータ形式

Datastore に使用可能なデータタイプは以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/270fc63b-104e-3f28-7e7a-469919934003.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/81bd0b22-e7aa-2d20-36e0-11f4ef36e837.png)

DB直接見るか、CSVデータでよこせって感じですね。

とりあえず考えずにできるCSVデータ、Blob Storage でやっていきます。

# ストレージアカウント

全件のデータを格納するためにテーブルと、CSVファイルを格納するためのコンテナー領域を作成します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/46a69a11-5900-b4ab-5ff3-8c23df221f7f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/c257fe5a-5f43-b7e4-330f-e9d1977e1770.png)


# Forms

こんな感じでアンケートを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/b99946a9-f80a-b95a-73bb-ec3bb9943c76.png)

# Power Automate

1.自動－一から作成をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/f4429314-44ac-099a-71d9-736c61ba7edc.png)

2.Microsoft Formsをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/81ab372b-cf27-a08c-f630-b1dafbcf0b09.png)

3.先ほど作成したFormsを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/aa25621f-7f86-9f55-43fb-912aa9d917cc.png)

4.応答の詳細を取得するを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/6bef848b-246d-eda1-bf9e-d3b45a52cb9d.png)

5.フォームIDと識別子を指定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/9ad6e8ce-6de8-af27-3149-6c4ff3866695.png)

6.Azure Table Storageからエンティティを挿入を指定し、テーブルと挿入するデータを以下のように指定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/7a9e7c5c-440f-d467-cdbc-1f85ca9447da.png)

```
{
  "PartitionKey": @{guid()},
  "RowKey": @{guid()},
  "gender":,
  "age":,
  "money":
}
```

※PartitionKeyとRowKeyは必ずguid関数を指定すること
※それ以外のJSONスキーマは任意です。作成したFormsの仕様に合わせましょう

7.Azure Table Storageからエンティティを取得を指定し、テーブル内の全件を取得します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/55f8d6f5-396c-84e9-6376-86a391191240.png)

8.CSVテーブルに変換処理を指定し、エンティティの取得で取得したデータを流し込む
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/6c1334ad-66b3-0f28-1322-e11a47b218a7.png)

9.blobストレージに格納する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/2b7e2a3c-0039-daf2-e24c-e79ace0e32b7.png)

# 試してみる

実際にFormsで取得したデータがきちんとファイルとして格納され
DataSetとして登録することができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269159/eed8602d-b7df-69fe-784c-e87b2d768635.png)

# まとめ

Azure Machine Learningのような高度技術ってなると、さすがに市民開発者は対応できない部分ではあるけども、必要なデータを収集ってところの部分までは、市民開発者でも全然できますよね！
※JSONの壁はちょっとありますけど・・・

機械学習をする上でなによりデータが一番大事だけど、そこまでエンジニアにおねがいするのか？
特にデータ部分なんて業務や製品担当者じゃないとわからないことも多いです。
こういう形で担当領域をきちんと区分けして、良い感じにバトンタッチすることで、開発効率の向上が図れますし、なによりも、誰もが主役になれる世界になっていくと思います！

是非ご参考ください＼( 'ω')／