繁体   English   中英

如何在视图或计划查询之间进行选择,以对通过 Stitch 导入的 BigQuery 表进行重复数据删除?

[英]How to choose between Views or Scheduled Queries for de-duplicating BigQuery tables imported via Stitch?

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

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

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

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

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

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

让 go 了解事实:

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

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

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

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

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

我认为它也可能会受到查询视图/表的频率的影响。 例如 - 对大型数据集的非常复杂的查询每次运行都会很昂贵。 如果结果是一个小得多的数据集,那么安排查询以保存结果并直接查询结果将更具成本效益 - 而不是使用会一次又一次地执行非常复杂的查询的视图。

对于速度因素- 直接查询简化表而不是视图肯定更好。 对于成本因素- 我会尝试了解查询此视图/表的频率以及它的处理+存储成本如何:

  1. 视图:粗略计算处理成本*每月查询的次数,例如
  2. 对于存储表:每月执行的预定查询 * 处理成本 + 表结果的每月存储成本

这应该为您提供了您需要构建的整个案例,以便为您的解决方案争论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM