CSVのデータをBigQueryへ5〜6秒おきにストリーミングで挿入しているのですが、luidというレコードデータが既存のデータにある物は省きたいのですが、これは可能でしょうか??
当たり前ですが、現状既存のデータに蓄積されてデータが入っております。
安直にも挿入の直前でレコードデータを削除も考えたのですが、レコードデータの削除はできないようで、テーブルの削除→再作成→ストリーミング挿入の流れも考えたのですが、処理が重くなり、エラーの危惧とストリーミング後のデータは90分間バッファとして保存され、削除、変更などの処理ができないようなので諦めました。
何か良い方法があればご教授頂きたいです。
よろしくお願いします。
def stream_upload(): with open('./test.csv','w') as f: f.write(response_get.text) print("made csv") # BigQuery client = bigquery.Client() project_id = 'test' dataset_name = 'test' table_name = "test" full_table_name = dataset_name + '.' + table_name json_rows = [] with open('./test.csv','r') as f: for line in csv.DictReader(f): del line[None] line_json = dict(line) json_rows.append(line_json) errors = client.insert_rows_json( full_table_name,json_rows,row_ids=[row['luid'] for row in json_rows] ) if errors == []: print("New rows have been added.") else: print("Encountered errors while inserting rows: {}".format(errors)) print("end") schedule.every(0.5).seconds.do(stream_upload) while True: schedule.run_pending() time.sleep(0.1)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/14 11:53
2021/01/14 12:14
2021/01/14 12:24
2021/01/14 12:32
2021/01/14 12:48 編集