我在 GCS 上有几个 csv 文件,它们共享相同的模式但具有不同的时间戳,例如:
- 数据_20180103.csv
- 数据_20180104.csv
- 数据_20180105.csv
我想通过 dataprep 运行它们并创建具有相应名称的 Bigquery 表。该作业应该每天使用调度程序运行。
现在我认为可行的方法如下:
- csv 文件应该有一个时间戳列,该列对于同一文件中的每一行都是相同的
- 在 GCS 上创建 3 个文件夹:raw、queue 和 wrangled
- 将原始 csv 文件放入 raw 文件夹。然后运行云函数将 1 个文件从原始文件夹移动到队列文件夹中,如果它是空的,否则什么也不做。
- Dataprep 根据调度程序扫描队列文件夹。如果找到 csv 文件(例如 data_20180103.csv),则运行相应的作业,输出文件将放入经过整理的文件夹(例如 data.csv)。
- 每当将新文件添加到经过整理的文件夹时,都会运行另一个 Cloud 函数。这将根据 csv 文件中的时间戳列创建一个新的 BigQuery 表(例如 20180103)。它还会删除队列和争吵文件夹中的所有文件,并继续将 1 个文件从原始文件夹移动到队列文件夹(如果有)。
重复直到创建所有表。这对我来说似乎过于复杂,我不确定如何处理云功能无法完成工作的情况。
对我的用例的任何其他建议表示赞赏。