大查询是否对标准SQL执行__TABLES_SUMMARY __

问题描述 投票:1回答:2

我们在Big Query中有一个数据集,其中有超过500000个表,当我们使用旧版SQL对这个数据集运行查询时,会引发错误

根据约旦·蒂加尼(Jordan Tigani),它执行SELECT table_id FROM。TABLES_SUMMARY以获取要查询的相关表How do I use the TABLE_QUERY() function in BigQuery?

使用_TABLE_SUFFIX(标准SQL)进行的查询是否执行TABLES_SUMMARY以获取要查询的相关表吗?

google-bigquery
2个回答
1
投票

根据documentation TABLE_SUFFIX是伪列,其中包含与表通配符匹配的值,并且在StandardSQL中可用。同时,__TABLE_SUMMARY_是一个元数据表,其中包含有关数据集中表的信息,并且在StandardLegacy SQL中可用。因此,它们有两个不同的概念。

但是,在StandardSQL中,您可以使用INFORMATION_SCHEMA.TABLES来检索有关所选数据集中表的信息,类似于__TABLE_SUMMARY_Here您可以找到用法示例及其limitations

以下,我同时使用两种方法查询了公共数据集:

首先,使用INFORMATION_SCHEMA.TABLES

SELECT * FROM `bigquery-public-data.noaa_gsod.INFORMATION_SCHEMA.TABLES` 

和部分输出:

enter image description here

其次,使用__TABLES_SUMMARY__

SELECT * FROM `bigquery-public-data.noaa_gsod.__TABLES_SUMMARY__`

和输出表的一部分,

enter image description here

如您所见,对于每种方法,输出都有一个特定的。即使两者都检索有关特定数据集中表的元数据。

NOTE:BigQuery的查询具有配额。此配额适用于某些情况,包括单个查询可引用的表数,即每个查询1000 here


0
投票

否,使用通配符表查询不会执行TABLES_SUMMARY。数据集中可以有超过500k个表,但是它确实要求与前缀模式匹配的表数必须少于500k。有关通配符表的其他限制,请参考documentation

© www.soinside.com 2019 - 2024. All rights reserved.