Google bigquery 大查询是否为标准SQL执行_;表_;摘要_;

Google bigquery 大查询是否为标准SQL执行_;表_;摘要_;,google-bigquery,Google Bigquery,在大查询中,我们有一个超过500000个表的数据集,当我们使用遗留SQL对这个数据集运行查询时,它会抛出一个错误 根据Jordan Tigani,它执行SELECT table_id FROM.TABLES_SUMMARY,以获取要查询的相关表格 使用_TABLE_SUMMARY(标准SQL)的查询是否执行TABLES_SUMMARY以获取要查询的相关表?根据的规定,TABLE_SUMMARY是一个伪列,包含表通配符匹配的值,在标准SQL中不可用。同时,\uuu TABLE\u SUMMARY

在大查询中,我们有一个超过500000个表的数据集,当我们使用遗留SQL对这个数据集运行查询时,它会抛出一个错误

根据Jordan Tigani,它执行SELECT table_id FROM.TABLES_SUMMARY,以获取要查询的相关表格

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

根据
的规定,TABLE_SUMMARY
是一个伪列,包含表通配符匹配的值,在标准SQL中不可用。同时,
\uuu TABLE\u SUMMARY\uu
是一个元表,包含数据集中表的相关信息,可以在标准和传统SQL中使用。因此,他们有两个不同的概念

但是,在StandardSQL中,您可以使用
信息\u SCHEMA.TABLES
来检索所选数据集中表的相关信息,类似于
\uuu TABLE\u SUMMARY
。你可以找到用法的例子,也可以找到它的用法

下面,我使用两种方法对公共数据集进行了查询:

首先,使用
信息\u SCHEMA.TABLES

和部分输出:

其次,使用
\uuu表格\uu摘要

和输出表的一部分

如您所见,对于每个方法,输出都有一个特定的值。尽管如此,它们都检索特定数据集中表的元数据


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

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

“its Sprowing a error”-什么查询,什么错误?您好,Felipe,它抛出了以下错误原因:ResourcesExceed,消息:查询执行期间超出了资源:dataset metatable中的表太多:。\uuuu tables\u SUMMARY\uuuuuuuuuu,超过了500000个限制。您好,Alexandre,谢谢你的回复。但这并没有回答我的问题。当您使用TABLE_QUERY对旧版运行查询时,默认情况下,它将执行TABLES_SUMMARY以获取TABLE_ID,然后运行实际查询。意味着额外的查询将在内部运行,类似地,当您使用_TABLE_后缀在标准上运行查询时,是否有任何额外的查询将运行以获取表ID(如您提供的信息_SCHEMA.TABLES)?Hi@Saivjay,在StandardSQL中,
INFORMATION_SCHEMA。TABLES
检索数据集中每个表的元数据。运行它时,可以检查作业执行详细信息,以检查作业的行为。此外,您还可以看到它将使用此方法扫描多少数据。同时,_TABLE_SUFFIX不提供任何关于表的元数据,它只选择/返回与通配符匹配的所有表的通配符。如果运行
从bigquery public data.noaa\u gsod.*
中选择_TABLE\u SUFFIX作为后缀,它将不会扫描任何数据,因为它是一个伪列。我回答你的问题了吗?
SELECT * FROM `bigquery-public-data.noaa_gsod.INFORMATION_SCHEMA.TABLES` 
SELECT * FROM `bigquery-public-data.noaa_gsod.__TABLES_SUMMARY__`