過去分(5年分)をStorageに取込み(gsutilコマンド)、作成したBigQueryのテーブルに追加していきます。
① ローカル→Storage
ローカル端末のシェルでgsutilコマンドを使用して取り込む。2017*となっているのは2017年のcsvすべてワイルドカード指定している。それを作成したバケット下のフォルダ「choka/2017」以下に転送するように命令している。(フォルダは指定すればバケット下に自動で作成される。)
from google.cloud import bigquery
import time
import os
import numpy as np
import sys
args = sys.argv
year = str(args[1])
print (year)
# 読み込みCSVリストを作成
files = os.listdir("../dev/data")
files_dic = {}
# 月ごとに作成
for i in np.arange(1,13):
#print (i)
files_dic[i] = [f for f in files if f.find(year + str(i).zfill(2))>-1]
# 自身のGCPProjectIDを指定
project_id = [プロジェクトID]
client = bigquery.Client(project=project_id)
# データセット、テーブル名を指定
detaset_id = [データセット名]
table_id = [テーブル名]
dataset_ref = client.dataset("test_choka")
table_ref = dataset_ref.table(table_id)
# config
job_config = bigquery.LoadJobConfig()
job_config.skip_leading_rows = 0
job_config.source_format = bigquery.SourceFormat.CSV
for i in np.arange(1,13):
if files_dic[i]:
#print (files_dic[i])
for f in sorted(files_dic[i]):
print (f)
# GCSのファイルが置いてあるパスを指定
uri = "gs://[GCSのバケット名とcsvのあるフォルダ]"+f
# ジョブを生成
load_job = client.load_table_from_uri(
uri, table_ref, job_config=job_config
)
# ロードを実行
load_job.result()
# 60秒間待つ
time.sleep(120)
実践 Google data portalに連携
Google data portalに連携
data portal連携前に、それ用のテーブルを作成します。2017-2022までを縦に結合したテーブルを作成。BQの画面から新規クエリ作成で行います。
CREATE TABLE test_choka.choka_all
AS
(
SELECT * FROM `****2017`
union all
SELECT * FROM `****2018`
union all
SELECT * FROM `****2019`
union all
SELECT * FROM `****2020`
union all
SELECT * FROM `****2021`
union all
SELECT * FROM `****2022`
)
****はそれぞれの年のテーブル名
GCS→BQの段階で同じテーブルに最初から入れておけばよいのであるが、運用上一応5つのテーブルに分けました。
適当にレポートを作成して共有します。
https://datastudio.google.com/u/0/reporting/339df563-d460-4b77-a415-0ec91cc202d3/page/e3OmC後は毎日新しいデータを取得するバッチ処理を追加します。