1

我根据存储在 BigQuery 表中的数据构建按需生成的统计输出。每天使用“仅附加”通过缝合导入一些数据。这导致在导入的表中出现重复的观察结果(大约 20kk 行每年增长 8kk)。

我可以安排一个 BigQuery 查询以将重复数据删除的值存储在已清理的表中,或者构建视图来执行相同的操作,但我不了解以下方面的权衡:

  • BigQuery存储/运行计划查询和视图的成本。
  • 稍后查询的速度取决于去重视图。视图是否缓存?

我是否正确地假设存储去重数据的每日计划查询成本更高(用于重写存储的表)但加快了以后对去重数据的查询(节省使用成本)?

重复数据删除后的数据将依次每天被查询数百次,以生成关注响应性的仪表板输出。

在决定更好的解决方案时我应该如何争论?

4

1 回答 1

1

让我们来看看事实:

  1. 无论您使用的是视图还是计划查询,您在查询中支付的价格都是相同的
  2. 使用Scheduled Query时,您需要为存储在重复数据删除表中的数据付费。由于视图不会存储任何数据,因此您不会产生额外费用。
  3. 在速度方面,使用计划查询方法会获胜,因为您已经对数据进行了重复数据删除和清理。如果您要向仪表板提供此数据,则View方法可能会导致仪表板加载延迟。
  4. 另一种可能的方法是使用物化视图,这是更智能的视图,可以定期缓存结果以提高性能。在本指南中,您可以找到有关在计划查询和物化视图之间进行选择的一些信息:

什么时候应该使用计划查询而不是物化视图?

计划查询是定期运行任意复杂计算的便捷方式。每次查询运行时,它都会完全运行。不使用之前的结果,您需要为查询支付全价。当您不需要最新数据并且对数据过时有很高的容忍度时,计划查询非常有用。

当您需要查询最新数据同时通过重用先前计算的结果来减少延迟和成本时,物化视图非常适合。您可以将物化视图用作伪索引,加速对基表的查询,而无需更新任何现有工作流。

作为一般准则,只要有可能并且如果您不运行任意复杂的计算,请使用物化视图。

于 2020-07-23T07:10:33.673 回答