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:如何使用大量新的时间序列数据有效地更新现有表?的主要内容,如果未能解决你的问题,请参考以下文章

Markdown公式用法大全

shell编程-如何定义函数如何调用函数如何调试shell

[精选] Mysql分表与分库如何拆分,如何设计,如何使用

四连问:前后端分离接口应该如何设计?如何保证安全?如何签名?如何防重?

集合元素如何添加?如何删除?如何遍历?

2021-10-16 如何如何如何。