Python/Pandas/BigQuery:如何使用大量新的时间序列数据有效地更新现有表?
Posted
技术标签:
【中文标题】Python/Pandas/BigQuery:如何使用大量新的时间序列数据有效地更新现有表?【英文标题】:Python/Pandas/BigQuery: How to efficiently update existing tables with a lot of new time series data? 【发布时间】: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
分析。
【问题讨论】:
你见过Data Transfer Service吗?我想知道这是否适合你。 【参考方案1】:考虑将您的数据分解为每日表(或分区)。那么你只需要上传当天的CVS。
您当前定义的脚本在其他方面似乎是合理的。
从时间线数据源中提取新一天的 CSV。 Gzip 以实现快速传输。 将它们复制到 GCS。 将新的 CVS 加载到当前的每日表/分区中。这避免了删除现有表的需要,并减少了您需要执行的数据量和处理。作为奖励,如果处理中出现错误,则更容易回填一天。
【讨论】:
我喜欢这个想法,但是当你决定开始跟踪一个新的时间序列时呢?您首次下载该时间序列将为您提供多天的数据 不幸的是,今天没有很好的方法来处理这种情况,除非前一天没有 LOAD 操作。您可以在 BigQuery 的公共问题跟踪器上提出功能请求,以更好地支持这种批量加载案例。以上是关于Python/Pandas/BigQuery:如何使用大量新的时间序列数据有效地更新现有表?的主要内容,如果未能解决你的问题,请参考以下文章