如何在视图或计划查询之间进行选择,以对通过 Stitch 导入的 BigQuery 表进行去重?
How to choose between Views or Scheduled Queries for de-duplicating BigQuery tables imported via Stitch?
我根据存储在 BigQuery table 中的数据构建按需生成的统计输出。一些数据每天使用“仅附加”通过缝合导入。这导致导入的 table 中有 duplicated observations(大约 20kk 行每年增长 8kk)。
我可以 安排一个 BigQuery 查询来将去重值存储在清理后的 table、 或 构建视图中相同,但我不理解以下方面的权衡:
- storing/running 计划查询和查看的 BigQuery 成本。
- speed 以后的查询取决于去重视图。视图缓存吗?
我是否正确地假设每日计划的查询来存储重复数据删除的数据成本更高(用于重写存储的 tables)但加快了以后对重复数据删除数据的查询(节省使用成本) ?
即,经过重复数据删除的数据每天将被查询数百次,以生成响应速度受关注的仪表板输出。
在决定更好的解决方案时,我应该如何争论?
让我们回到事实:
- 无论您使用的是 View 还是 Scheduled Query[=27=,您在查询中支付的价格都是相同的]
- 使用计划查询 时,您需要为存储在去重table 中的数据付费。由于 View 不会存储任何数据,因此您不会产生额外费用。
- 就速度而言,使用计划查询 方法更胜一筹,因为您已经对数据进行了去重和清理。如果您要将此数据提供给仪表板,View 方法可能会导致仪表板加载延迟。
- 另一种可能的方法是使用 Materialized Views, which are smarter Views that periodically cache results in order to improve performance. In this guide 您可以找到一些有关在计划查询和实体化视图之间进行选择的信息:
When should I use scheduled queries versus materialized views?
Scheduled queries are a convenient way to run arbitrarily complex
calculations periodically. Each time the query runs, it is being run
fully. The previous results are not used, and you pay the full price
for the query. Scheduled queries are great when you don't need the
freshest data and you have a high tolerance for data staleness.
Materialized views are suited for when you need to query the latest
data while cutting down latency and cost by reusing the previously
computed result. You can use materialized views as pseudo-indexes,
accelerating queries to the base table without updating any existing
workflows.
As a general guideline, whenever possible and if you are not running
arbitrarily complex calculations, use materialized views.
我根据存储在 BigQuery table 中的数据构建按需生成的统计输出。一些数据每天使用“仅附加”通过缝合导入。这导致导入的 table 中有 duplicated observations(大约 20kk 行每年增长 8kk)。
我可以 安排一个 BigQuery 查询来将去重值存储在清理后的 table、 或 构建视图中相同,但我不理解以下方面的权衡:
- storing/running 计划查询和查看的 BigQuery 成本。
- speed 以后的查询取决于去重视图。视图缓存吗?
我是否正确地假设每日计划的查询来存储重复数据删除的数据成本更高(用于重写存储的 tables)但加快了以后对重复数据删除数据的查询(节省使用成本) ?
即,经过重复数据删除的数据每天将被查询数百次,以生成响应速度受关注的仪表板输出。
在决定更好的解决方案时,我应该如何争论?
让我们回到事实:
- 无论您使用的是 View 还是 Scheduled Query[=27=,您在查询中支付的价格都是相同的]
- 使用计划查询 时,您需要为存储在去重table 中的数据付费。由于 View 不会存储任何数据,因此您不会产生额外费用。
- 就速度而言,使用计划查询 方法更胜一筹,因为您已经对数据进行了去重和清理。如果您要将此数据提供给仪表板,View 方法可能会导致仪表板加载延迟。
- 另一种可能的方法是使用 Materialized Views, which are smarter Views that periodically cache results in order to improve performance. In this guide 您可以找到一些有关在计划查询和实体化视图之间进行选择的信息:
When should I use scheduled queries versus materialized views?
Scheduled queries are a convenient way to run arbitrarily complex calculations periodically. Each time the query runs, it is being run fully. The previous results are not used, and you pay the full price for the query. Scheduled queries are great when you don't need the freshest data and you have a high tolerance for data staleness.
Materialized views are suited for when you need to query the latest data while cutting down latency and cost by reusing the previously computed result. You can use materialized views as pseudo-indexes, accelerating queries to the base table without updating any existing workflows.
As a general guideline, whenever possible and if you are not running arbitrarily complex calculations, use materialized views.