実現したいこと
・リストのテーブル作成をループで行う
前提
GCPでpythonを用いて、データパイプラインを作成しています。
複数テーブルを作成する機能を実装したところ、エラーは出ていないのですが、テーブルの作成が出来ませんでした。
また、Colab上で試した際はデータフレームの作成までは行えていました。
発生している問題・エラーメッセージ
Function execution took 7668 ms, finished with status: 'ok'
該当のソースコード
def main(event,context): project_id = '◯◯' client = bigquery.Client(project=project_id) pytrends = TrendReq(hl='ja-JP' , tz=-540) keyword = ['野球','サッカー','バスケ'] lst = ['base ball','soccer','basket ball'] for w in keyword: pytrends.build_payload(kw_list = [w], timeframe='today 3-m', geo='JP') df = pytrends.interest_over_time() df = pd.DataFrame(df) break for t in lst: table = [t] table_name = f'google_trends.{table}' res_bq = make_bq(df, table_name) def make_bq(df, table_name): try: project_id = '◯◯' bq_client = bigquery.Client(project=project_id) dataset, new_table = table_name.split(".") dataset_ref = bq_client.dataset(dataset) table_ref = dataset_ref.table(f'{new_table}') job_config = bigquery.LoadJobConfig(write_disposition='WRITE_TRUNCATE') bq_client.load_table_from_dataframe(df.astype("str"), table_ref,job_config = job_config).result() return "success" except Exception as e: return str(e)
試したこと
関数をもう一つ作り、そちらでテーブル作成を行おうとしました。
しかし、その場合でも同様にエラーが起きず、テーブルの作成が行われませんでした。
for文のインデントの階層を合わせることなどは行ったのですが、なかなかうまく行きません。
このような処理でデータフレーム作成→テーブルに格納のループを行いたいです。
関数1
キーワードリスト = [A,B,C]
テーブルリスト = [a,b,c]
for データ取得
df = ◯◯
for テーブル作成
table_name = ◯◯
res_bq = 関数2(df,table_name)
関数2(df,table_name)
→Aのデータを取得し、そのデータフレームをaのテーブルに格納し、Bのデータフレームをbのテーブルに格納するという作業を行いたいです。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/08 05:57