Go言語でGoogle Cloud StorageへのUploadとBigQueryで集計

GMOアドマーケティングに中途入社してまもないy.yです。

11/5(日)のGo Conferenceの内容についてまとめようと思っていたのですが

補欠からくり上がれなかったので今回はGo言語を使って

Google Cloud Storageへのアップロードをし、BigQueryでの集計手順について記載します。

 

本題に入る前にGo言語を選んだ理由

マスコットキャラクターのGopherくんが可愛かった 😀

Gopherくんはホリネズミという動物がモチーフらしいです。

どうでしょう?世界のミッキー○ウス並みにGopherくん可愛くないですか??

引用元:Gopherくん入門

@tentenのGopher by tenntenn CC BY 3.0

 

公式のGopherくんはきも可愛いですね 😀

引用元:The Go Blog

The Go Blog by Google CC BY 3.0

Gopherくんについて詳しく知りたい方は Gopherくん入門 へ!

 

Gopherくんが可愛いから選んだというのは冗談で

実際は下記の2点でGo言語を選択しました。

  1. いくつかの言語でパフォーマンスを計測した結果、Go言語のパフォーマンスが一番良かった。
  2. 並列処理でログをparseするのにGo言語が簡単だった。

 

ここから本題の手順を記載いたします。

  • Google Cloud Storageへのアップロード

ContentType 型:String

ContentTypeを指定します。

ChunkSize 型:Int

指定したサイズを上限にオブジェクトを分割してアップロードする指定。

1回のリクエストでアップしたい場合はCunkSizeを指定。

上限を指定しない場合は0または無指定。

オプションの詳細はこちら

容量の大きいObjectをUploadする際はネットワークに影響しないように制限した方がいいかもしれないですね。

 

  • BigQueryへLoad

AllowJaggedRows 型:bool

不正なレコードがあった場合、NULLとして扱うかエラーとして扱うかを選択します。

MaxBadRecords 型:Int

不正なレコード数を許容するレコード数を指定します。

Compression 型:String

Google Cloud StorageにuploadされたLoadするObjectの圧縮タイプを指定します。

FileDelimiter 型:String

Loadされるファイルのdelimiterを指定します。

オプションの詳細はこちら

圧縮されたファイルをLoadをする場合はCompression、CSV形式ではないファイルをLoadする場合はFileDelimiterを指定しましょう。

 

  • BigQueryで集計

UseLegacySQL 型:bool

オプションの詳細はこちら

LegacySQLを使用する場合はUseLegacySQLをtrueにしましょう。

 

ここまででGoogle Cloud Storageへのアップロード、BigQueryでの集計手順は終わりです。

どういったオプションがあるのか確認するのに時間が多少かかりましたが

アップロード、集計までの処理はサクッと簡単に書くことができました。

Go言語に関してまだまだ初心者なのでまずは中級者を目指したいと思います。

以上、Google Cloud Storageのアップロードから BigQueryでの集計の手順でした。

 

エンジニア採用

弊社は、広告をより便利な物にしていく事を一緒に目指してくれるエンジニアを募集しています。