使用Python和Google Cloud从网站下载文件中的特定行数据



我希望使用Python和Google Cloud从互联网下载一个文件(https://covid.ourworldindata.org/data/owid-covid-data.csv)。

目前,我有这个代码。

import os
import wget
from google.cloud import storage
url = os.environ['URL']
bucket_name = os.environ['BUCKET'] #without gs://
file_name = os.environ['FILE_NAME']
cf_path = '/tmp/{}'.format(file_name)
def import_file(event, context):
# set storage client
client = storage.Client()
# get bucket
bucket = client.get_bucket(bucket_name)
# download the file to Cloud Function's tmp directory
wget.download(url, cf_path)
# set Blob
blob = storage.Blob(file_name, bucket)

# upload the file to GCS
blob.upload_from_filename(cf_path)
print("""This Function was triggered by messageId {} published at {}""".format(context.event_id, context.timestamp))

虽然这段代码运行得很好,但covid - 19数据每天都会更新,并添加新的日期(因此,如果我在3/7访问该文件,它将包括直到3/6的数据)。而不是重写整个文件,我希望只提取新更新的行到google存储为每次运行的函数,而不是覆盖已经保存的文件。

我很擅长编程,如果你能帮助我,我会很感激的。

虽然文件是csv格式的,但也有一个JSON链接(https://covid.ourworldindata.org/data/owid-covid-data.json),如果它会使编码更容易。

我可以找出存储到云存储的部分,但需要帮助的代码提取最新的行/数据在更具体的.

通常的最佳实践是每天在BigQuery中加载数据,并根据摄取日期进行分区。

然后,您可以运行查询(或创建视图)来只选择最近的数据类型(使用分区语法)(重复数据删除)

最新更新