BigQueryにオープンデータを入れてみた【初心者】

<h2>BigQueryとは？</h2>

BigQueryとはGoogle Cloud Platform(GCP)で提供されるビッグデータプロダクトの一つです。もともとは Google社内で利用されていましたが外部ユーザー向けに利用できるようにしたサービスがBigQueryです。BigQueryの特徴は高速な処理で、120憶行の正規表現マッチ付き集計を数十秒で完了します。

今回はKB(キロバイト)程度の小さなデータではありますが、公開されているオープンデータをBigQueryに入れて集計をしていきます。

<h2>使用するオープンデータ</h2>
今回は<a href= "https://www.kaggle.com/" >kaggle</a>の<a href= "https://www.kaggle.com/unsdsn/world-happiness" >World Happiness Report(世界幸福度調査レポート)</a>を使用します。
World Happiness Reportは、世界の幸福の状態に関する調査です。155カ国と地域を幸福度でランク付けしたものです。項目は幸福度に関わると考えられる以下の8つです。この項目は毎回見直され、更新されています。
そのため2019年と同じ項目なのは2018年のものだけです。

今回は初回のため、その中で2019年だけを使用していきます。

<table>
<tr><th>項目(原語)</th><th>項目(日本語)</th></tr>
<tr><td>Country or region</td><td>国・領域</td></tr>
<tr><td>Score</td><td>幸福度</td></tr>
<tr><td>GDP per capita</td><td>一人当たりのGDP</td></tr>
<tr><td>Social support</td><td>ソーシャルサポート</td></tr>
<tr><td>Healthy life expectancy</td><td>健康寿命</td></tr>
<tr><td>Freedom to make life choices</td><td>人生の選択をする自由</td></tr>
<tr><td>Generosity</td><td>寛大さ</td></tr>
<tr><td>Perceptions of corruption</td><td>腐敗の認識</td></tr>
</table>

![worldhapiness.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/868828/bfb52131-9546-ab41-0d58-57bd19aa0293.jpeg)
<a href= "https://www.kaggle.com/unsdsn/world-happiness" >World Happiness Report｜kaggle</a>

<h2>ダウンロードしたデータ</h2>
こちらがダウンロードしたデータになります。通常は前処理が必要となりますが今回はそのままBigQueryに入れても文字化けやエラーにはならないため、このまま入れます。
ダウンロードしてきたCSVデータの文字コードはShift-jisのため、
そのまま読み込むと文字化けが起きます。必ず文字コードはUTF-8に変換してからアップロードしましょう。
（BigQueryはUTF-8しか対応してないらしいです。）
![worldhappiness date.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/868828/31331a9d-c478-0cfb-4ca3-e4a0a2d07d19.jpeg)

<h2>BigQueryにデータを入れる</h2>

これからダウンロードしたCSVデータを、BigQueryに入れていきます。自身が初心者のため、分かりやすいよう細かい手順を説明していきます。前提としてBigQueryにすでにアカウントを持っている状態から始めます。

1.Projectの作成
2.Datasetの作成
3.Tableの作成
という手順で進めていきます。

<h3>1.Projectの作成</h3>

「プロジェクトの選択」から右上の「新しいプロジェクト」を選択します。
![project1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/868828/e1784433-72a0-ab91-d515-b4ab48d4825e.jpeg)

プロジェクト名を決め、「作成」ボタンを押してプロジェクト作成を行います。
![project4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/868828/28a0a8bc-b672-c0aa-cea6-3241ce334e7b.jpeg)

<h3>2.Datasetの作成</h3>
プロジェクトが作成出来たら、今度はデータセットを作成します。右下の「データセット作成」をクリックし、データセットを作成していきます。
![worldhapiness report.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/868828/0263d5ae-373b-e231-d9ce-c67cce4bdad0.jpeg)

データセットIDを記入し「データセットの作成」を行います。
データセットIDはSQLを打つときによく使用するのであまり複雑なものではないものをおすすめします。
![project6.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/868828/8b0cf3b4-2393-4410-b2a9-16437575c65a.jpeg)

<h3>3.Tableの作成</h3>
1.ソース→アップロード→ファイル
　先ほどデータセットからダウンロードしたファイルを選択します
2.テーブル名を記入
　データセットIDと同じく自分でテーブル名を決定します。
3.「自動検出」にクリック
　今回は自動検出でしたが、列名・データ型・モードを設定する必要がある場合はここで設定をします。設定が間違っている場合はのちのSQLでデータを呼び出す際にエラーが起こる場合があるので気を付けてください。

4.詳細オプションで「スキップするヘッダー行」に「1」を記入
　これは最初の一行目をデータとしてカウントしないという意味です。「Score」「GDP per capita」などは項目名のためその読み込みをしないという意味になります。

![worldhapiness report5.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/868828/df00815f-6e91-4c78-d7ef-f6d22d0a1415.jpeg)
![worldhapiness report6.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/868828/8b7ad44d-4ecd-3148-0891-8ff606a98d39.jpeg)

<h2>データにクエリを実行する</h2>
BiQueryにまで読み込みができたので、試しにクエリを実行してみます。
以下は、国(地域)別に幸福度数と一人当たりのGDPを抽出するクエリです。GDPが高い地域に絞って比較してみたかったので、GDPが1以上の国に絞っています(特に意図があるわけではありません)。

```
select Country_or_region,Score,GDP_per_capita	
from score.2019
where GDP_per_capita >1
order by Score desc;
```

結果はこんな感じです。

![project12.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/868828/64079fc2-c5fc-433c-c7f2-00bc8de3d65d.jpeg)
これだけだと相関関係までは何もわかりませんが、一人あたりのGDPが高い国のほうが幸福度も高いのではないかという仮説が出てきますね。
※他データなど見てるわけではないのでただの感想です。

BigQueryへのデータのインポートまとめ
今回はデータのBigQueryへのインポートと