TROCCO®のHTTPコネクタを活用して気象データをBigQueryに転送する

# はじめに
気象データは日常生活だけでなく、あらゆるビジネスシーンでの活用が見込まれます。
以下は気象データを活用したビジネスシーンの一例になります。

- 商品の需要予測
- 売上との相関分析
- 農作物の生育予測

無償の気象データを使う場合、[気象庁のwebページ](https://www.data.jma.go.jp/obd/stats/etrn/index.php?prec_no=82&block_no=0780&year=1983&month=&day=&view=)からではまとまったデータを取るのが難しいです。
一方、過去7日分の気象庁のデータであれば、CSVで取得することができます。

今回はSaaSのTROCCO®を使って過去7日分の気象庁のデータをBigQueryに転送する方法を紹介します。


# 使用する気象データについて
今回は気象庁が発布している「最新の気象データ」を使用します。

https://www.data.jma.go.jp/stats/data/mdrr/docs/csv_dl_readme.html

### 取得できる気象現象
CSVでダウンロード可能な気象現象は以下の表のとおりです。

|気象現象 |要素|
|:-----------|:------------|
|降水    |  1,3,6,12,24,48,72時間降水量 日降水量 降水量全要素　|  
|気温    | 最高気温 最低気温      |
|風速| 最大風速 最大瞬間風速         |
|降雪|現在の積雪 最深積雪 3,6,12,24,48,72時間降雪 累積降雪量 降雪量全要素|

なお、降雪に関しては11月から5月の冬季間のみデータ取得が可能になります。

### データの仕様

各気象現象のデータの仕様については下記リンクから確認してください。
参考までに最低気温のデータの仕様を添付します。

https://www.data.jma.go.jp/stats/data/mdrr/docs/csv_dl_readme.html


https://www.data.jma.go.jp/stats/data/mdrr/docs/csv_dl_format_mntem.html

また、気象現象ごとに以下3つの情報がデータとして取得可能です。

- 　当日の最新情報
- 　当日の時刻指定した情報
- 　1日-7日前までの情報

### データの更新頻度
更新頻度は下記の表の通りです。

|気象現象|更新頻度|
|:-|:-|
|今日の降水量 | 10分毎の更新|  
|今日の降水量以外（累積降雪量は除く） |1時間毎の更新 |
|1-7日前の全要素（累積降雪量を含む）|毎日5時00分,13時00分, 19時00分,1時00分ごろに更新|

# 事前準備
TROCCO®アカウントの作成をお願いします。
TROCCO®には無料で始められるフリープランがあります。

https://trocco.io/lp/index.html

# 実装
TROCCO®にログインし、転送設定の新規作成に進みます。
**転送元** : HTTP・HTTPS
**転送先** : BigQuery
を選択します。
### 転送元設定
転送元のURLは取得データによって、可変となる場所が存在し、その場所をパラメーターとして定義します。パラメーターの設定には、TROCCO®のカスタム変数機能を活用します。

TROCCO®の転送元設定画面で、以下のようにフォームを埋めていきます。

|設定項目名|設定内容|
|:-|:-|
|URL |`https://www.data.jma.go.jp/stats/data/mdrr/{weather1}/alltable/{weather2}{date}.csv` |  
|HTTPメソッド |GET|
|パラメーター |`weather1` / `weather2` / `date`|
|ファイル入力形式|CSV / TSV|
|文字エンコーディング|Shift_JIS|

URLの可変の場所については、以下の点に留意する必要があります。

`weather1` `weather2`は気象現象を表す文字列が入るため、取得したいデータによって異なります。

また`date`に関しても、取得したいデータによって表示形式が異なります。

参考までに、2日前の最低気温のデータを転送する例を添付します。

![スクリーンショット 2024-06-04 19.34.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/7cc8c6f7-c8a0-a8b7-2141-7844aaaaa800.png)

### 転送先設定
転送先設定にて、BigQuery側のプロジェクト、データセット、スキーマを設定していきます。

STEP2の画面に進むと、取得データのプレビューを確認することができます。

![スクリーンショット 2024-06-04 13.07.58 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/a3b4ffd4-3ce5-63de-a112-9dc927caa053.png)

BigQuery転送時、カラム名に関して注意が必要です。
元データのCSVには、()や℃といった文字がカラム名に含まれています。

[BigQueryでは扱えない文字列のため](https://cloud.google.com/bigquery/docs/schemas?hl=ja#column_names)、詳細設定のカラム名で該当文字を_やCに変更が必要になります。今回は元データのCSVで利用されている和名でカラム名を記載しています。 

![スクリーンショット 2024-06-04 13.47.43 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/7f21f7af-33b8-41ed-7486-2c43285c61be.png)

また、データを継続的に蓄積する場合も、カラム名に注意を払う必要があります。

元データのカラム名が日によって異なります。例えば、2024年6月2日のデータでは、その日の最低気温を表すカラムは[2日の最低気温(℃)]という名前で格納されています。

同じテーブルにデータを蓄積する場合は、STEP2で「当日の最低気温_C」といったカラム名に書き換えることを推奨します。

カラム名変更後、データ型などは自動設定のままで問題ないので、確認・保存と進みます。転送実行後、プレビュー画面で、実際にBigQueryにデータが入っていることを確認できました。

![スクリーンショット 2024-06-05 10.55.08 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/5e023d1c-58e7-d3f7-92f7-27ab7c46fed7.png)

# まとめ
過去７日分の気象庁のデータを取得し、簡単にBigQueryへ転送することができました。

気象データを継続的に蓄積していくことで、様々なビジネスシーンでの活用に繋がります。
今回のようにGUIのみでデータを整備できると、エンジニアに限らず多くの方でも気象データの活用を進めることができます。
是非やってみてください！