gpt4 book ai didi

sql - BigQuery 表中按 ID 显示最新行的物化 View ?

转载 作者:行者123 更新时间:2023-12-05 06:01:22 26 4
gpt4 key购买 nike

我有一个包含约 5k 个唯一 ID 的 BigQuery 表。每天都会为可能存在或可能不存在的 ID 插入新行。

我们使用此查询来查找最近的行:

SELECT t.*
EXCEPT (seqnum),
FROM (SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY id
ORDER BY date_of_data DESC
) as seqnum
FROM `[project]`.[dataset].[table] t
) t
WHERE seqnum = 1

虽然我们只需要每个 ID 的最新行,但此查询必须扫描整个表。随着表大小的增长,此查询每天都变得更慢且成本更高。现在,对于一个 8GB 的​​表,上面的查询创建了一个 22MB 的表。如果 22MB 的表可以保持最新,我们更愿意查询它。

是否可以创建一个物化 View 来获取每个 ID 的最新行?

有比将表格增长到无穷大更好的解决方案吗?

其他要求:

最佳答案

解决方案之一是 partition您的主表(包含所有行)按列 date_of_data 以每日为粒度。

创建一个单独的表,该表将只保留每个 ID 的最新行。通过对整个主表的单次扫描填充它一次,然后通过仅查询主表的最后一天来每天更新它。由于分区查询主表的最后一天将只扫描主表的最后一天。

关于sql - BigQuery 表中按 ID 显示最新行的物化 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67238332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com