Python/Pandas/BigQuery: 如何使用大量新的时间序列数据高效地更新现有表?

Python/Pandas/BigQuery: How to efficiently update existing tables with a lot of new time series data?

我有一个程序可以从远程数据库下载时间序列 (ts) 数据并将数据保存为 csv 文件。新的 ts 数据附加到旧的 ts 数据。随着更多数据的下载,我的本地文件夹不断增长。下载新的 ts 数据并保存后,我想将其上传到 Google BigQuery table。做这个的最好方式是什么?

我目前的工作流程是将所有数据下载到 csv 文件,然后将 csv 文件转换为我本地计算机上的 gzip 文件,然后使用gsutil 将那些 gzip 个文件上传到 Google Cloud Storage。接下来,我删除 Google BigQuery 中的任何 table,然后通过首先删除 Google BigQuery 中任何现有的 table 然后创建一个新的 table 来手动创建一个新的 table一个是从 Google Cloud Storage 上传数据。我觉得有很大的空间 automation/improvement 但我是一个 Google 云新手。

编辑:澄清一下,我正在下载的数据可以被认为是从雅虎财经下载时间序列数据。每一天,我都会下载新数据并保存到我的本地机器上。我必须将我必须的所有数据上传到 Google BigQUery,以便我可以对其进行 SQL 分析。

考虑将您的数据分解为每日表(或分区)。那么你只需要上传当天的CVS即可。

您当前定义的脚本似乎是合理的。

  • 从您的时间线数据源中提取新一天的 CSV。
  • Gzip 它们以便快速传输。
  • 将它们复制到 GCS。
  • 将新 CVS 加载到当前每日 table/partition。

这避免了删除现有表的需要,并减少了您需要执行的数据量和处理量。作为奖励,如果在处理过程中出现错误,更容易回填一天。