ブログ記事の
今回は、
前提
以下の
OS
% sw_vers ProductName: Mac OS X ProductVersion: 10.13.6 BuildVersion: 17G65
Python の
Version % python3 -V Python 3.6.5
課金に ついて
CSV インポート、
1年分の
1月真面目に
ストレージの
料金 | BigQuery | Google Cloud
登録、 登録後の 検索までの 手順
以下のような
- 事前準備
- Google Search Console から
データを 取得する。 - 取得した
データを CSV に 変換し、 Google Cloud Storage に アップロードする。 - Google Cloud Storage に
登録した CSV を、 BigQuery インポートする。 - 使い方
- 検索クエリを
実行する。
それぞれ
1. 事前準備
Google Cloud Storage の
Python の
動かすと
Python で Google Cloud Storage と、
2.、 3. を 実施する スクリプト
Python スクリプトを、2.、<wbr>3.
のまとまりで
作成した
ここでは、
Google Search Console の
データ取得、 CSV 変換に ついて
joshcarty/google-searchconsole: A wrapper for the Google Search Console API. を使用して、 Pandas の DataFrame に 変換し、 その 後に CSV に 変換しています。
Branch にService Accounts 使う ための 修正が 入っているので、 Branch の ライブラリを インストールします。
以下のIssue から Branch の URL は 辿れます。
Add support for Service Accounts · Issue #2 · joshcarty/google-searchconsoleDataFrame の
URL の デコード でdf['page'] = df['page'].apply(lambda x: urllib.parse.unquote(x))
URL の デコードを 行なっています。
理由はURL に 全角文字が 含まれる 場合、 Google Analytics と Google Search Console での 戻り値が 異なる ためです。 CSV には
DataFrame の インデックスは 出力しない
CSV の出力時に index=False
を指定して df.to_csv(temp_file_name, index=False)
Google Cloud Storage の
GOOGLE_APPLICATION_CREDENTIALS 設定に ついて で、from google.cloud import storage os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = GOOGLE_APPLICATION_CREDENTIALS_PATH
GOOGLE_APPLICATION_CREDENTIALS の 設定を 行いましたが、 Authentication — google-cloud e1a7cfe documentation のように、 client = Client.from_service_account_json('/path/to/keyfile.json')
でもできるのかもしれませんが、試して おりません。
4 を 実施する スクリプト
作成した
以下、
Pandas から
BigQuery への 登録方法に ついて
pandas.io.gbq
を使うと 直接 DataFrame を BigQuery に 登録できます。
何かで、Google Cloud Storage から、 CSVファイルを インポートした ほうが 速度的に 有利と いうのを 見かけたので、 Google Cloud Storage から ファイルを アップロードする 方式に しました。ただ、 そこまで 大きい データではなかったので、 直接登録でも 良かった 気が します。
以下スライドにCSV の アップロードと、 INSERT の 違いに ついての 記載が あります。
Google Cloud ベストプラクティス:Google BigQuery 編 - 02 : データ処理 / クエリ / データ抽出テーブルの
削除に ついて
更新の際も 使用するかなと 思って、 テーブル削除処理を 追加。
登録時はエラーに なるので、 エラーを 無視して 登録を 行うようにしました。 try: client.delete_table(table_ref) # API request except: pass
5.使い 方
以下のように、
以下は、2017-05-18
の
python3 gsc_to_gcs.py 2017-05-18 python3 load_data_to_bigquery_from_gcs.py 2017-05-18
6.検索クエリを 実行する。
API経由でないと
取得できない データに ついて
ページ、クエリ両方を ディメンションと して 指定した データは API 経由でないと、 取得が できません。
この形式で データを 取得して、 分析するのが 良いのかと 思います。 直近 1年分の
データを 取得する SELECT * FROM `GSC_Statistics.gsc_*` WHERE _TABLE_SUFFIX BETWEEN REPLACE(CAST(DATE_SUB(CURRENT_DATE, INTERVAL 365 day) AS string), '-', '') AND REPLACE(CAST(DATE_SUB(CURRENT_DATE, INTERVAL 1 day) AS string), '-', '') ORDER BY date ASC
日付指定
SELECT * FROM `GSC_Statistics.gsc_*` WHERE _TABLE_SUFFIX BETWEEN '20180501' AND '20180610' ORDER BY date ASC
日付条件で
参考
投稿時に
Google Search Console Data into Google BigQuery – Ben Powis – Medium
作成後に、検索したら ヒットしましたが、 この 記事と 実装方法は 違いますが 同じことができます。
Google-Search-Console-bulk-query-to-GBQ
の説明が 記載されています。 benpowis/Google-Search-Console-bulk-query-to-GBQ: A script to iterate through the available filters on Google Search Console, pulling large amounts of historical data and uploading it into Google BigQuery.
pandas.io.gbq
でデータの 登録を 行う ツールです。
私は登録の 速さから gcs を 経由しましたが、 正直 データ あまり 多くなかったので、 直接登録の ほうが よかったかもしれません。 A Simple Tool For Saving Google Search Console Data To BigQuery - Adapt
gsc-logger
の説明が 記載されています。 jroakes/gsc-logger: Google Search Console Logger for Google App Engine
gcloud のアプリケーションと して 動作可能な Google Search Console > Big Query の データ連携ツールです。
Google App Engine の無料枠で 動かせるのかもしれません。 結構便利かなと 思います。 BigQueryで
テーブルを 日付ごとに 分ける 必要が なくなったり、 古い テーブルの ストレージ代が 安くなったりするらしい - 唯物是真 @Scaled_Wurm
BigQuery のクエリの 検索方法を 参考に させてもらいました。 BigQueryで
有り 金全部溶かさないように、 テーブルの 日付ごとの パーティション(partition)機能に ついて 調べてみた - 唯物是真 @Scaled_Wurm
BigQuery のクエリの 検索方法を 参考に させてもらいました。 5分で
わかる!BigQuery Tips集 - Gunosyデータ分析ブログ
_TABLE_SUFFIX
を使って 検索を 実行する 際に 参考に しました。
以上です。
コメント