BigQueryを初めて触る人に気をつけてほしいこと
はじめに
クラウドサービスって便利なんですが、料金体系を把握しておかないと、ある日突然びっくりする金額の請求が来てしまう...なんてことがよくあります。
その中でもBigQueryのやらかし話は多い(私のチームでも実際にありました...)ので、初心者にこれだけは気をつけてほしいことをまとめてみました。
前提:BigQueryの料金体系
BigQueryの料金は大きく分けて クエリの実行にかかるコスト(コンピューティング料金)とBigQueryのデータ保存にかかるコスト(ストレージコスト)の2つがあります。
つまり、1回のクエリの実行にかかるコストが高かったり、BigQueryに保存されるデータが多くなると、利用料金が上がっていく仕組みになっています。
安易に「Select * 」してはいけない
ちょっとデータの中身を見てみたいからという理由で Select * From hoge Limit 1
といったようにクエリを実行してみたくなると思います。
ですが、データが大量に格納されているテーブルで、このようなクエリを実行してしまうと膨大な利用料金がかかってしまいます。
クエリコストを抑えるためのパーティション
じゃあ、膨大な利用料金がかかることなくデータを確認するためにはどうしたらいいのか...となると思うのですが、そんなときに パーティション という機能が役に立ちます。
パーティションというのは、簡単にまとめると大量にデータが入っているテーブルの中である特定のカラムを基準にして分割される機能になります。
パーティションを指定することでデータのスキャン量を抑えることができ、結果的にクエリの実行にかかるコストを下げることができます。
実行前には必ずスキャン量を確認する
BigQueryにはドライランというどのくらいのスキャン量になるのか予測してくれる機能があります。
クエリ実行前にスキャン量を確認しておくと、想定以上にクエリ実行コストが掛かっていたという事態を防ぐことができます。
BigQueryのコンソール上でクエリを作成すると、数秒程度でスキャン量を予測してくれるので私もよく使ってます。
まとめ
データ基盤としてよく使われるBigQueryですが、使い方を誤ると予想以上にコストが掛かってしまうというやらかしが多いサービスです。
パーティションを指定してクエリを実行したり、スキャン量を確認するという癖がついていると事故も少なくなると思います。
Discussion