👋

データサイエンス100本ノック(構造化データ加工編)をBigQueryでやりたいに応える

2022/04/24に公開

概要

  • 今回,BigQueryでデータサイエンス100本ノック(構造化データ加工編)を作りました.
  • 同じ手順で,誰もが利用できると思います.
  • Dockerで作ったJupyterLab環境で動きます.
  • Dockerに関するファイルの説明は行いません.

以下にコード等を置いてありますので,興味がある方はご覧ください.
何か不具合あれば,issueでご連絡ください.
https://github.com/yuiki-iwayama/100knocks-preprocess-BigQuery

前提

  • GCPアカウント登録を済ませておく[2]
  • Dockerをセットアップしておく[3]

手順

概要

  1. プロジェクトを作成する
  2. サービスアカウント/サービスアカウントキーを作成して,ローカルに保管する
  3. Docker上でBigQueryを動かしてみる

1. プロジェクトを作成する


まず,Google Cloud Platform上でプロジェクトを作成します.

  1. ビューの上部にあるプロジェクト セレクタ(<プロジェクト名>▼の箇所)をクリックする

  2. プロジェクト セレクタのダイアログ ボックスが表示されるので,右上の新しいプロジェクトをクリックする

  3. プロジェクト名入力して,作成をクリックする(ここでは100knocks-testとしている)

  4. ビューの上部にあるプロジェクト セレクタ(<プロジェクト名>▼の箇所)をクリックして,先ほど作成したプロジェクトをクリックして移動する

  1. リソースのUIから,BigQueryをクリックする

  2. 右上にでてくるアップグレードをクリックする

  3. 請求先のアカウントを選択し,アカウント設定をクリックする(個人だと請求先アカウントしかでない)

2. サービスアカウント/サービスアカウントキーを作成して,ローカルに保管する


続いて,サービスアカウント,およびサービスアカウントキーを作成し,ローカルに保管します.

  1. ナビゲーションメニューをクリックし,IAMと管理を選択し,サービス アカウントをクリックする

  2. +サービス アカウントを作成をクリックする

  3. 小文字開始の6~30の英数字でサービスアカウント IDを入力し,作成して実行をクリックする

  4. ロールを選択をクリックし,「BigQuery -> BigQuery管理者」を選択し,続行をクリックする

  5. ユーザーにこのサービス アカウントへのアクセスを許可 (省略可)と出たら,完了をクリックする

  6. 操作の下の「」をクリックし,鍵を管理をクリックする

  7. 鍵を作成をクリックして,新しい鍵を作成をクリックする

  8. キーのタイプはそのまま「JSON」にしたまま,作成をクリックし,デスクトップにダウンロードしておく

  9. mkdir /.gcpで隠しフォルダを作成し,mv ~/Desktop/<作成した鍵>.json ~/.gcp/で移動させる

3. Docker上でBigQueryを動かしてみる


いよいよ,BigQueryを動かしてみます.

  1. $ git clone git@github.com:yuiki-iwayama/100knocks-preprocess-BigQuery.gitでリポジトリを任意のディレクトリにcloneしてくる

  2. $ cd 100knocks-preprocess-BigQueryでディレクトリを移動する

  3. .envファイルをエディターで開き,以下の項目を記載する

    • GCP_KEY_PATH=は「~/.gcp/<作成した鍵>.json」を記載する

    • GCP_IAM=は,サービスアカウントのメールを記載する

    • GCP_PROJECT_ID=は,「## 1. プロジェクトを作成する」で作ったプロジェクトのIDを記載する
      ※ナビゲーションメニュー->ホーム->プロジェクトIDで確認できる

    • GCP_DATA=は,これから作りたいデータセット名を記載する

    .env
    GCP_KEY_PATH=
    GCP_IAM=
    GCP_PROJECT_ID=
    GCP_DATA=
    
  4. $ docker-compose up -d --buildでコンテナをbuildする(buildが終わっても,データを送っているため多少時間かかる)

  5. $ docker-compose logsでデータセットの作成が成功しているかを確認できる

  6. 次にBigQuery上でもデータセットが作成されているかを確認できる

  7. ブラウザでlocalhost:8888にアクセスしてJupyterLabを立ち上げる

  8. BigQuery.ipynbを開き,1個めと2個めのセルを実行してうまくいけば,BigQueryで100本ノックを行える

  9. Python.ipynbも1個めのセルを実行すれば,BigQueryからデータがDataframeに格納されるので,同様に100本ノックを行える

参考

脚注
  1. おそらく無料の範囲内(クエリ:毎月 1 TB,ストレージ:毎月 10 GB)で大丈夫とは思いますが,料金についてはGoogle BigQuery の料金体系を解説を参考にしてください. ↩︎

  2. ステップ 1: Google Cloud アカウントを作成するを参考にしてください. ↩︎

  3. Docker入門して機械学習環境構築を参考にしてください. ↩︎

  4. サンドボックスの状態のままだと,コンテナをbuildしてから60日後にテーブルが消えるかもしれないですが,検証していません.詳しくはクレジットカードは不要 : クエリを無料で試せる BigQuery サンドボックスをご確認ください. ↩︎

Discussion