[英]How to choose between Views or Scheduled Queries for de-duplicating BigQuery tables imported via Stitch?
我构建了从 BigQuery 表中存储的数据按需生成的统计 output。 每天使用“仅附加”通过缝合导入一些数据。 这导致在导入的表中出现重复的观察结果(大约 20kk 行每年增长 8kk)。
我可以安排一个 BigQuery 查询以将重复数据删除的值存储在已清理的表中,或者构建视图来执行相同的操作,但我不了解以下方面的权衡:
我是否正确地假设存储去重数据的每日计划查询成本更高(用于重写存储的表),但加快了以后对去重数据的查询(节省使用成本)?
重复数据删除后的数据将依次每天被查询数百次,以生成需要关注响应性的仪表板 output。
在决定更好的解决方案时我应该如何争论?
让 go 了解事实:
什么时候应该使用计划查询而不是物化视图?
计划查询是定期运行任意复杂计算的便捷方式。 每次查询运行时,它都会完全运行。 不使用之前的结果,您需要为查询支付全价。 当您不需要最新数据并且对数据过时有很高的容忍度时,计划查询非常有用。
当您需要查询最新数据同时通过重用先前计算的结果来减少延迟和成本时,物化视图非常适合。 您可以将物化视图用作伪索引,加速对基表的查询,而无需更新任何现有工作流。
作为一般准则,只要有可能并且如果您没有运行任意复杂的计算,请使用物化视图。
我认为它也可能会受到查询视图/表的频率的影响。 例如 - 对大型数据集的非常复杂的查询每次运行都会很昂贵。 如果结果是一个小得多的数据集,那么安排查询以保存结果并直接查询结果将更具成本效益 - 而不是使用会一次又一次地执行非常复杂的查询的视图。
对于速度因素- 直接查询简化表而不是视图肯定更好。 对于成本因素- 我会尝试了解查询此视图/表的频率以及它的处理+存储成本如何:
这应该为您提供了您需要构建的整个案例,以便为您的解决方案争论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.