【发布时间】:2021-02-17 08:29:56
【问题描述】:
每个名称的每个日期都有 3 个文件,格式如下: 'nameXX_date',这是一个例子: '名称XX_01-01-20' '名称XY_01-01-20' 'nameXZ_01-01-20'
其中“名称”可以是任何内容,日期是文件上传的日期(几乎每天)。
我需要编写一个云函数,每当有新文件进入存储桶时触发,它将 3 个 XX、XY、XZ 文件合并到一个文件名 = "name_date" 的文件中。
这是我目前所得到的:
bucket_id = 'bucketname'
client = gcs.Client()
bucket = client.get_bucket(bucket_id)
name =
date =
outfile = f'bucketname/{name}_{date}.CSV'
blobs = []
for shard in ('XX', 'XY', 'XZ'):
sfile = f'{name}{shard}_{date}'
blob = bucket.blob(sfile)
if not blob.exists():
# this causes a retry in 60s
raise ValueError(f'branch {sfile} not present')
blobs.append(blob)
bucket.blob(outfile).compose(blobs)
logging.info(f'Successfullt created {outfile}')
for blob in blobs:
blob.delete()
logging.info('Deleted {} blobs'.format(len(blobs)))
我面临的问题是我不确定如何获取落入存储桶中的新文件的名称和日期,以便我可以找到其他 2 个匹配的文件并将它们组合起来
顺便说一句,我从这篇文章中得到了这段代码,我正在尝试在这里实现它:https://medium.com/google-cloud/how-to-write-to-a-single-shard-on-google-cloud-storage-efficiently-using-cloud-dataflow-and-cloud-3aeef1732325
【问题讨论】:
标签: python google-cloud-functions google-cloud-storage