【问题标题】:Python/Pandas/BigQuery: How to efficiently update existing tables with a lot of new time series data?Python/Pandas/BigQuery:如何使用大量新的时间序列数据有效地更新现有表?
【发布时间】:2017-12-01 21:51:08
【问题描述】:

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

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

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

【问题讨论】:

标签: python pandas google-bigquery google-cloud-platform gsutil


【解决方案1】:

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

您当前定义的脚本在其他方面似乎是合理的。

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

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

【讨论】:

  • 我喜欢这个想法,但是当你决定开始跟踪一个新的时间序列时呢?您首次下载该时间序列将为您提供多天的数据
  • 不幸的是,今天没有很好的方法来处理这种情况,除非前一天没有 LOAD 操作。您可以在 BigQuery 的公共问题跟踪器上提出功能请求,以更好地支持这种批量加载案例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
相关资源
最近更新 更多