假设我有一个包含数据的电子表格和一个手动启动的 Python 脚本,该脚本加载它并将其发送到 Google BigQuery。
假设在 11:00 我有 10 行,我的脚本读取它们并将其发送到 GBQ。
然后在18:00,我有15排。我只想读取并发送这 5 个新行。 使用 Python 实现此目的的最佳方法是什么?
我的想法是:
您能提出您的想法或对我的一些评估吗?
您的想法走在正确的轨道上!
使用索引或标记行: 此方法涉及使用 Google 表格电子表格中的索引或标记行来跟踪最后处理的行。当您的脚本运行时,它会从标记行之后的下一行开始读取数据。此方法简单有效,但确实需要通过添加索引或标记行来修改电子表格。
基于时间戳的方法: 此方法涉及向电子表格添加时间戳列。每当添加新行时,该行的时间戳就会自动设置为当前时间。当您的脚本运行时,它可以在电子表格中查询时间戳大于脚本上次运行时间的行。此方法不需要修改现有行,但需要您有时间戳列。
这是基于时间戳的方法的更详细实现:
添加时间戳列: 在您的 Google 表格电子表格中添加一列来存储时间戳。每当添加新行时,该行的时间戳应自动设置为当前时间。您可以使用 Google Sheets 公式来实现此目的。
记录上次运行时间: 在 Python 脚本中,您可以保存上次运行脚本的时间戳。您可以将此时间戳存储在文件或配置设置中。这将用作识别新行的参考点。
查询新行: 当脚本再次运行时,它可以在 Google Sheets 电子表格中查询时间戳大于记录的上次运行时间的行。这可以通过使用 Google Sheets API 和 Python 来实现。
更新上次运行时间: 处理完新行后,将记录的上次运行时间更新为当前时间。这可确保下次运行脚本时,它将仅处理在此更新的时间戳之后添加的行。
这种方法非常强大,不需要修改电子表格中的现有数据。它还确保您根据插入时间准确捕获新行。
就效率而言,两种方法都有其权衡。基于时间戳的方法对于准确捕获新数据可能更可靠,特别是在可以在脚本运行之间添加行的情况下。但是,它确实涉及更多的 API 调用,因为您需要根据时间戳进行查询。索引/标记行方法更简单,但需要对电子表格中的标记行进行额外管理。
希望我能帮忙:)