GCP Python

GoogleColaboratoryでBigQuery上のテーブル情報の読み込み・書き出し

この記事は約4分で読めます。

 

前準備

 

GoogleColaboratoryはGoogleアカウントさえあれば使えますが、GCPアカウントと直接紐づいているわけではないのでユーザーの認証を事前に通しておく必要があります。

 

#グーグルアカウント認証でgooglecolabとBQを繋ぐ
from google.colab import auth
auth.authenticate_user()

 

上記のコードを実行すると、アカウント連携を許可するかどうかホップアップが出るのでアカウント連携を許可します。

*ColaboratoryでGoogleアカウントを認証するだけなので、対象のGoogleアカウントがGCPのBigQueryにアクセスする権限を持っていなければクエリも実行不可能です。

 

BigQueryのテーブルをSELECTする

 

認証が通ったらいよいよColabからBQのテーブルにクエリを叩くわけですが、その方法としてはColaboratoryのMagic Commandの%%bigqueryを使うなどいろいろありますが、JupyterNotebookからであれば自分がアクセス可能なGCPプロジェクトのIDがわかっていればマジックコマンドを使ってクエリを実行することができます。

 

<実行イメージ>

# BigQueryのテーブルからデータをセレクトする
%%bigquery --project <プロジェクトID> df
SELECT * FROM `<プロジェクトID>.<テーブル名>` LIMIT 1000
;

 

実際に、BQで誰でもアクセスできる公開データセットの1つの野球のデータをSEELCTで引っ張ってみます。

 

# BigQueryの公開データセットの野球に関するテーブルの件数を数えて
# pd.DataFrameにdfという名称で突っ込む
%%bigquery --project {GCPのProjectID} df
SELECT  
  COUNT(*) as cnt
FROM 
  `bigquery-public-data.baseball.games_post_wide` 
;

 

これを実行すると変数dfにクエリの結果が格納されます

 

おまけ

 

他にもGCPがPython用に作ったの公式ライブラリを使用する方法もあります。

 

from google.cloud import bigquery
project_id = '<プロジェクトID>'
# authが終わっていたら普通にクライアント認証は通る
client = bigquery.Client(project=project_id)
# 実行するクエリ
query =  """
                SELECT * FROM `<プロジェクトID>.<テーブル名>` LIMIT 1000
                ;
         """
# メソッドに`to_dataframe()`をつけるとpd.DataFrameで結果を受け取れる
df = client.query(query).to_dataframe()

 

 

BigQueryにデータの書き込み・テーブル作成

 

Python上のデータをBigQueryの書き込むのは読み込みより簡単で、登録したいデータをデータフレームにセットしてto_gbq()関数を呼び出すだけです。

 

# プロジェクトの定義
project_id='myProject'
# テーブル名の定義
table='test_table'

# データフレームの内容をBigQueryのテーブルに追加
df.to_gbq( table, project_id=project_id, if_exists="append")

 

ちなみに引数で指定するif_existsには以下の指定ができます

 

・if_exists=”replace” テーブルを置き換える

・if_exists=”append” テーブルにデータを追加する

・if_exists=”fail” 既に同名のテーブルがある場合はエラーを吐く

 

 

参照:https://qiita.com/Hyperion13fleet/items/a77ca93a61cb39d50138

 

 

 

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 関連記事:GoogleColaboratoryでBigQuery上のテーブル情報の読み込み・書き出し […]

タイトルとURLをコピーしました