RDS(MySQL)からBigQueryへのデータ同期

RDS(MySQL) から BigQuery へ1日1回データを同期して、データ分析やレポート系の処理で利用することになりました。 構成 以下の構成でデータを同期することにしました。 要件1: データの断面は合わせたい 元々はEmblukを使って直接同期しようと考えていたが、Embulkだとテーブル毎にデータを同期することになり、テーブルによってデータの断面が微妙にずれるため断念 CSV 形式でダンプして、Embulk で同期することもできそうだが、元々自動でスナップショットが取られているのでそれを利用することにした => スナップショットを parquet 形式で S3 にエクスポートすれば、BigQuery Data Transfer Service を使って BigQuery に取り込むことができるので、採用 要件2: コストを抑えたい 定額利用料がかかるサービスは使うことはで Continue Reading

Posted On :
Category:

BigQueryのpython client(google-cloud-bigquery)の使い方

BigQueryのpython client(google-cloud-bigquery)の使い方をメモっていきます。 インストール サービスアカウントキーファイルを環境変数に設定 こちらを参考に、サービスアカウント+キーファイルを作成し、そのキーファイルのパスを環境変数に設定します。 export GOOGLE_APPLICATION_CREDENTIALS="/hoge/fuga/key_file.json" ライブラリインストール pip install google-cloud-bigquery クライアント生成 from google.cloud.bigquery import Client client: Client = Client() # 環境変数 GOOGLE_APPLICATION_CREDENTIALSが設定されている前提。引数で渡すこともできる Continue Reading

Posted On :
Category:

BigQueryのTips

BigQuery関係のTipsをまとめていきます。 bqコマンドについては こちら に記載してます。 コストについて こちらを参照するとわかりますが、ストレージコストとクエリコストがあります。 ストレージコストはだいたい想像つくと思うので、ここではクエリコストについて記載します。 認識しておきたいのは以下の3つだと私は思ってます。 コストは、アクセスするデータ量(バイト数)で決まる カラム型DBなので、必要なカラムのデータだけを取得する オプティマイザが優秀なので、最終的に利用するテーブル・カラム以外は処理対象にならない このルールを元に考えると、だいたいコストがどうなるか分かります。 実際にbq query –dry_runでアクセスするデータ量を厳密に確認しつつ以下の表を作りました。 項目 コストへの影響 説明 * 対象テーブルの全カラム分のコストがかかる *を使うとそのテーブルの全 Continue Reading

Posted On :