郵便番号検索するためのデータベースを作成する-2

本記事は下記の続きです
伝え忘れていましたが、中級くらいの知識が必要なんではないかと思います。

https://qiita.com/ChisatoMatsunami/items/e1076caff4459110fa9d


## 前回ダウンロードしたCSVのファイルを取得する


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111714/43e32a64-80ce-d989-44fc-944d1e05e8ec.png)

ファイルコンテンツを取得したらデータを作成アクションに吐き出してください。
(下記コードはサンプル。BOMの削除も必要)
```ruby:選択のstate部分
split(replace(outputs('ファイル_コンテンツの取得')?['body'],'"',''),decodeUriComponent('%0D%0A'))
```
csvファイルなので下記のようなデータが取得できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111714/e989a60d-0707-da52-16cf-514646e0bd98.png)
一つずつのデータは,(コンマ)で分割されているので
Split関数を使って切り出していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111714/e1a40a6e-b783-4a5a-a2f8-d5770081be9e.png)



```ruby:選択のstate部分
split(item(), ',')?[2]
```
私が抜き出したのは

:::note info
1.郵便番号
2.都道府県
3.市区町村
4.番地以下
:::

この４つの項目ですが
必要に応じてカナなどを追加してください。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111714/0d489dd0-8317-b311-4d0b-f3bd5cc4c425.png)

切り出すと上記のようにaddressに
以下の掲載がない場合という文字や、(１丁目から１９丁目)など
不要な部分が出てくるのでそれらをreplace関数で変更していきます


```ruby:以下の掲載がない場合という文字を消す
if(equals(item()?['address'],'以下に掲載がない場合'),'',item()?['address'])

if(and(not(empty(item()?['address'])), contains(item()?['address'], '（')), slice(item()?['address'], 0, indexOf(item()?['address'], '（')), item()?['address'])
```

CSVを読み取ると大体データの一番最後にnullが入ってしまっているので
そのデータをアレイのフィルターで削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111714/003c6267-5aa5-5c89-f49a-3a69ad29ea12.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111714/dd1a6e9a-1259-6075-affa-601fccd39aef.png)


## 整形したJsonデータからOneDriveにデータベースを作る
それではOneDriveに郵便番号データベースを作成していきます。
ただし、PowerAppsで住所を呼びだすにはデータが多すぎてレスポンスが下がるため
都道府県別にデータベースを作成していきます
```jaon:分割する都道府県
[
  {
    "都道府県": "北海道"
  },
  {
    "都道府県": "青森県"
  },
  {
    "都道府県": "岩手県"
  },
  {
    "都道府県": "宮城県"
  },
  {
    "都道府県": "秋田県"
  },
  {
    "都道府県": "山形県"
  },
  {
    "都道府県": "福島県"
  },
  {
    "都道府県": "茨城県"
  },
  {
    "都道府県": "栃木県"
  },
  {
    "都道府県": "群馬県"
  },
  {
    "都道府県": "埼玉県"
  },
  {
    "都道府県": "千葉県"
  },
  {
    "都道府県": "東京都"
  },
  {
    "都道府県": "神奈川県"
  },
  {
    "都道府県": "新潟県"
  },
  {
    "都道府県": "富山県"
  },
  {
    "都道府県": "石川県"
  },
  {
    "都道府県": "福井県"
  },
  {
    "都道府県": "山梨県"
  },
  {
    "都道府県": "長野県"
  },
  {
    "都道府県": "岐阜県"
  },
  {
    "都道府県": "静岡県"
  },
  {
    "都道府県": "愛知県"
  },
  {
    "都道府県": "三重県"
  },
  {
    "都道府県": "滋賀県"
  },
  {
    "都道府県": "京都府"
  },
  {
    "都道府県": "大阪府"
  },
  {
    "都道府県": "兵庫県"
  },
  {
    "都道府県": "奈良県"
  },
  {
    "都道府県": "和歌山県"
  },
  {
    "都道府県": "鳥取県"
  },
  {
    "都道府県": "島根県"
  },
  {
    "都道府県": "岡山県"
  },
  {
    "都道府県": "広島県"
  },
  {
    "都道府県": "山口県"
  },
  {
    "都道府県": "徳島県"
  },
  {
    "都道府県": "香川県"
  },
  {
    "都道府県": "愛媛県"
  },
  {
    "都道府県": "高知県"
  },
  {
    "都道府県": "福岡県"
  },
  {
    "都道府県": "佐賀県"
  },
  {
    "都道府県": "長崎県"
  },
  {
    "都道府県": "熊本県"
  },
  {
    "都道府県": "大分県"
  },
  {
    "都道府県": "宮崎県"
  },
  {
    "都道府県": "鹿児島県"
  },
  {
    "都道府県": "沖縄県"
  }
]
```
上記Jsonを利用してApply to eachでフィルターを利用しながら都道府県別の郵便番号データベースをjsonファイルで作成していきます
(読み取りリミットをないのはJsonファイルだけなので必ずJsonファイルにしてください)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111714/1696c3b8-087b-5836-0ed8-54b8e1cbc443.png)


最後に、読み取りはとても重たいですが全国郵便番号が含まれたJsonファイルを作成してフローを終了します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111714/1a8caa0c-4121-ee29-bbde-fffc48013f35.png)


## アドバイス:月中くらいにスケジュール実行を行いデータをダウンロードするようにするといい

csvのアップロードは大体月末に郵便局で行われているようなのですが
月末だと郵便局の中の人がファイル名を間違えてUploadすることなどがあるようなので
(お忙しい中大変お疲れ様です…）
月中くらいにダウンロードしてデータベースを作成するとよろしいかと思います。


以上が郵便番号データベースを作成する方法でした。
次はPowerAppsでこの郵便番号データベース利用する方法を記載していきます。