【问题标题】:Does deleting and creating a table in bigquery renews the quota limit per day?在 bigquery 中删除和创建表是否会更新每天的配额限制?
【发布时间】:2019-01-21 09:54:38
【问题描述】:

我正在创建一个数据管道,它每分钟将数据写入 bigquery 表并最终超过配额限制。几个小时后删除表然后重新创建会更新该表的配额限制吗?

我正在使用 bigquery 的 Python API 来完成这项任务。

需要在不超过配额限制的情况下更新 bigquery 中的同一张表。

【问题讨论】:

  • 您能解释一下您要解决的问题是什么吗?这听起来有点奇怪..
  • 示例用例是:Bigquery 表 A 在上午 12:00 创建,具有配额和限制。如果我在凌晨 02:00 删除此表并重新创建表 A。新创建的表 A 是否会有更新的配额和限制?我指的是这个文档页面的配额和限制cloud.google.com/bigquery/quotas
  • 当然,但是问题是什么,即您要解决的业务问题?
  • 我正在谷歌数据工作室中创建一个实时仪表板,它从 bigquery 表中获取数据。该表每分钟更新一次数据,因此在一天结束之前耗尽了表每天的写入/加载配额。因此,我正在考虑在几个小时后删除该表并重新创建它。这就是为什么我要问这个问题,如果我删除并重新创建表,表的配额/限制/天会被更新吗?
  • 您能否按照我的用例建议在 bigquery 中删除并重新创建同名表后,确认配额和限制是否更新?

标签: google-bigquery


【解决方案1】:

根据 BQ 文档,它规定每个表每天更新 1,000 次的上限。

我认为您必须“设计”方法来绕过对表格的更新频率。有一些非常明显的方法可以解决这个问题(这也是非常标准的行业惯例),然后还有一些技巧。以下是我能想到的:

  1. 您可以选择不那么频繁地更新目标表(覆盖)。
  2. 您可以编写一个新表名,使其仅对一天中特定时间间隔内的更新有效(例如:在凌晨 2 点到 3 点之间,让您的管道将查询结果写入表 mydataset.my_table_[date]_02_03)。然后,在查询时,您可以使用通配符语句,例如:

    select count(*) as cnt from `mydataset.my_table_[date]_*`
    

    相当于:

    select count(*) as cnt from (
       select * from (
           select * from `mydataset.my_table_[date]_00_01`
       )
       union all
       select * from (
           select * from `mydataset.my_table_[date]_01_02`
       )
       union all 
       ....
    )
    

    但是,在此过程中,请确保您始终将数据“附加”(而不是覆盖)到与一天中的时间相对应的表中。此外,不要忘记,您始终可以充分利用 BQ 的日期分区表来获得类似的结果。

希望这会有所帮助。

【讨论】:

  • Google 文档另有说明:cloud.google.com/bigquery/quotas。每日目标表更新限制 - 每个表每天 1,000 次更新。您能分享您指的是哪些文档吗?
  • 其实这个答案并不完全正确。我会更新我的答案以更准确。
  • 没关系。如果我的原始问题的答案是“是”或“否”,那将非常有帮助。
  • 对您原来的问题的回答是:不。删除一个表,重新创建它然后更新它仍然会被视为对同一个表的操作。原因是:TableId 仍然是相同的。正如我在答案中解释的那样,您可以更改要在给定间隔内写入的表名,并且不会以这种方式达到配额限制。查询时,使用通配符。
  • 感谢您回答我原来的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-14
  • 1970-01-01
相关资源
最近更新 更多