sql - 如何在 BigQuery 中手动查询缓存表
问题描述
假设我有以下查询:
select 1
如果我再次运行查询,它将从缓存中获取它:
查询完成(经过 0.1 秒,已缓存)
但是,如果我运行如下查询:
SELECT 1
它不会从缓存中抓取它。有没有办法手动查询缓存表?例如,转换SELECT 1
为查询SELECT * FROM name_of_cache_table
?
查询规范化在上述情况下有效,但出于我们的目的,我们希望能够在必要时直接访问缓存。
解决方案
可以查询缓存表,因为它创建了一个匿名表。有关更多详细信息,请参阅如何存储缓存结果。
为了能够查看这些匿名表,您需要bq ls -a
在终端中调用,因为无法在 BQ UI 中查看它们。请参阅列出数据集。
但请注意,不鼓励从缓存表中查询,因为它们会在 24 小时内过期。
我在我的项目中尝试了这个,我得到了一些匿名表(我更改了给定测试表的一些值,只是为了使它们与我的不是 100% 相同)。
命令:
bq ls -a --project_id my-project
匿名表以下划线开头,然后是随机字符串值:
_04c819c1520b1c756fc2a6364v87c5fc9d53f48c
_18af1144380d70b33cc27c9975c444fdfe36dfa9
_730f58d68c6f40ed0335322e46c4c87cer3af6290
....
要检查您需要的数据是否在这些数据集上,您可以检查 __TABLES__ ,它将返回和 之类的creation_time
字段last_modified_time
。
检查表元数据:
SELECT
*
FROM
`_730f58d68c6f40ed0335322e46c4c87cer3af6290.__TABLES__`
元数据结果:
尝试查询以下表之一:
SELECT
*
FROM
`_730f58d68c6f40ed0335322e46c4c87cer3af6290.anon36335c2bcd73b61558b7028ca8666efac3802a28`
匿名表的结果:
推荐阅读
- spatstat - weighted.median 不再存在于最新发布的 spatstat 版本中
- c - 如何实现 TAS(“测试和设置”)?
- android - 如何在 RecyclerView.Adapter 中使用 ViewBinding?
- google-app-engine - 使用 App Engine Flex 自定义 Rumtime 和 Tomcat 将 HTTP 重定向到 HTTPS
- html - How to make HTML table columns stack vertically within rows spanning the full width
- ruby-on-rails - 找不到没有 ID 的用户,通知程序
- android - How do I overlap components inside a ConstraintLayout?
- python - Get required output using SHLEX QUOTE
- c# - 如何强制 Excel 通过 EPPlus 显示科学计数法?
- jquery - 如何将 URL 从当前页面发送到目标页面?