0
BigQueryテーブルにPythonを使用して行を追加する毎日のcronジョブを設定していますが、重複データが挿入されています。私はオンラインで検索しましたが、手動で方法があることを知っていますremove duplicateデータが、私は最初にこの重複を避けることができるかどうかを見たいと思った。BigQueryテーブルに挿入する前にデータが存在するか確認してください(Pythonを使用)
データレコードが既に存在するかどうかを確認する方法はありますか最初に重複データが挿入されないようにするにはどうすればよいですか?ありがとう。
コードスニペット:
import webapp2
import logging
from googleapiclient import discovery
from oath2client.client import GoogleCredentials
PROJECT_ID = 'foo'
DATASET_ID = 'bar'
TABLE_ID = 'foo_bar_table’
class UpdateTableHandler(webapp2.RequestHandler):
def get(self):
credentials = GoogleCredentials.get_application_default()
service = discovery.build('bigquery', 'v2', credentials=credentials)
try:
the_fruits = Stuff.query(Stuff.fruitTotal >= 5).filter(Stuff.fruitColor == 'orange').fetch();
for fruit in the_fruits:
#some code here
basket = dict()
basket['id'] = fruit.fruitId
basket['Total'] = fruit.fruitTotal
basket['PrimaryVitamin'] = fruit.fruitVitamin
basket['SafeRaw'] = fruit.fruitEdibleRaw
basket['Color'] = fruit.fruitColor
basket['Country'] = fruit.fruitCountry
body = {
'rows': [
{
'json': basket,
'insertId': str(uuid.uuid4())
}
]
}
response = bigquery_service.tabledata().insertAll(projectId=PROJECT_ID,
datasetId=DATASET_ID,
tableId=TABLE_ID,
body=body).execute(num_retries=5)
logging.info(response)
except Exception, e:
logging.error(e)
app = webapp2.WSGIApplication([
('/update_table', UpdateTableHandler),
], debug=True)
データが過去24時間以内に検索されない限り、そのパーティションのみを検索するのは費用がかかるようです。 –