CSVファイルのデータをBigQueryに転送するデータパイプラインの作り方

sakai
9 min readMar 10, 2020

--

はじめに

クラウドネイティブなデータ連携サービスReckoner(レコナー)を使用して、CSVファイルをBigQueryにデータ転送してみます。
CSVファイルはShift JIS形式かつ日本語フィールドを想定し、データ変換のパイプラインを作成してBigQueryにImport可能な形で格納します。

こんな感じ

BigQuery格納前

BigQuery格納後

カラムが英語名になり、テーブルに格納されていることがわかります。

ワークフローの概要

  1. ファイルアップロードのSourceを追加
  2. TransformのProjection(投影)を使用してカラムを変換
  3. 転送先にBigQueryを指定して、データを転送

使用するcsvファイル

国勢調査 時系列データ CSV形式による主要時系列データ

上記ページの 男女別人口-全国,都道府県(大正9年~平成27年) を使用します
※最下部の2行のみ手動で削除しています

事前準備

BigQuery テーブルの作成と使用 などを参考にBIgQueryで空テーブルを作成します。
Cloud Storage ストレージ バケットの作成 などを参考にCloud Storage バケットを作成します。

ワークフロー作成

左側のグローバルメニューから「ワークフロー」を選択して「作成」を選択します。

ファイルアップロード

ワークフローのタスクから「SOURCE」を選択して、

「FILE UPLOAD」をドラッグして右側の格子状の箇所にドロップします。

ドラッグアンドドロップに成功するとFILE UPLOADの設定画面が開かれるので、「ファイル」部でCSVファイルをアップロードします。
今回のファイルはShift JISエンコードなので、「エンコード」部ではshift-jis を選択します。

アップロードしたら「セット」を選択して完了します。
※先程のサイトでダウンロードした「c01.csv」というcsvファイルをアップロードしています。
「ファイル名」部はアップロードしたファイル名になります。

フィールド変換

BigQueryではフィールド名に日本語が使えないため、PROJECTION(投影)という機能を使って日本語フィールドを英語フィールドに変換する処理を行います。

「TRANSFORM」から「PROJECTION」を選択し、を右側の格子状の画面にドラッグアンドドロップします。

「モード」は「keep」とし、「keepフィールド」及び「リネーム」の「+」ボタンを設定するカラム数分押下して、メッセージBOXを用意しておきます(効率がいいため)。

各項目に日本語フィールドと変換後の英語フィールドを入力します。

設定完了後「セット」を選択して完了します

BigQueryへ転送

「SINK」を選択して「GOOGLE BIGQUERY」を右側の格子状の画面にドラッグアンドドロップします。

ドラッグアンドドロップに成功するとGOOGLE BIGQUERYの設定画面が開かれるので、格納先のBigQueryの設定状況に合わせて必要な項目を入力して「セット」を選択します。
※今回対象はBigQueryのEmptyなtableなので、Modeはappendとしています。

データパイプラインの作成

作ったWORKFLOWを確認すると以下のようになっています。

赤カッコの部分を選択し、出てくる矢印をドラッグして連携させます。

ワークフローの実行

「名前」と「説明」を入力して「保存」を選択。

遷移した画面で「実行」を選択。

状況を確認するため「ジョブ」を選択。

このような形でジョブの状況が確認できるので、「ステータス」の部分が「COMPLETED」になるまで待ちます。

ジョブが問題なく完了すると「COMPLETED」となります。

ジョブを選択し、

ここで実行時のログを確認できます。

実際のログ。ジョブが失敗した場合などはここで原因を確認します。

このようにBigQuery上のtableにCSVファイルが吐き出されていることが確認できれば完了です。

おまけ

BigQueryに格納したデータを利用して、Googleのデータポータルでデータの可視化をしてみます

日本の総人口の推移

1945年は戦争の影響か、総人口が1940年に比べて減少していることがわかります。
その後は順調に増えていっていますが、2010年に頭打ちになり、2010年から2015年にかけて、総人口が減少していることがわかります。

男女別の人口の推移

1940年までは男性の人口の方が多かったですが、1945年からは女性の人口の方が男性に比べて増えて、かつ男性は1940年より減っていることがわかりますね。これも戦争の影響でしょうか。軍人として駆り出された男性の方が亡くなった数が多いということが示唆されていそうです。
私もこのデータを可視化して初めてこの事実に気が付き、改めて戦争の凄惨さを突きつけられた気持ちです。

そして1945年以降2015年まで、男性の人口は女性の人口を超えていないようです。

2015年の都道府県別の総人口の割合

こうして可視化するとやはり東京が圧倒的ですね。

このようにデータを可視化すると、数字だけでは気が付かなかったことに気づけたりします。
特に男女別の人口を可視化した時に、総人口のグラフを可視化しただけではわからなかったことに気がつき、可視化の力を感じられたと思います。

2015年の都道府県別の総人口の割合 のみ、データポータルのカスタムクエリの機能で少し整形して可視化していますが、それ以外は特に弄ること無く可視化できました。

Reckonerを使えばこのようなデータも簡単に処理して用意することができます。
皆様も是非使ってみてください。

Reckoner(レコナー)について

Reckoner(レコナー)は、スリーシェイクが提供するオンプレミスからクラウドサービスまで、様々なデータを連携させることが可能なクラウドネイティブなデータ連携プラットフォーム(Data Integration Platform as a Service)です。
データ整備に欠かせないETL/ELTやデータパイプラインなどをノンプログラミングで実現し、従来エンジニアが必要とされていた開発・運用コストを大幅に削減できます。
https://www.reckoner.io/

スリーシェイク概要

会社名:株式会社スリーシェイク
所在地:東京都千代田区東神田1–11–14トーシン東神田4F
代表取締役:吉田拓真
事業内容: SRE特化型コンサルティング事業、データ分析プラットフォーム「Reckoner(レコナー)」の運営
https://3-shake.com

世界で通用するプロダクトの開発メンバー募集中

現在スリーシェイクではReckoner(レコナー)の開発メンバーを募集しています!
まずはカジュアルに話を聞いてみたいというご希望も大歓迎です。弊社代表が直接面談致します。
世界で通用するプロダクトを開発していくためにエンジニア、デザイナー、各職種で募集中なのでご興味ある方はぜひお気軽にご連絡ください。
https://herp.careers/v1/threeshake

--

--