首页 > 解决方案 > 大查询是否为标准 SQL 执行 __TABLES_SUMMARY__

问题描述

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

根据 Jordan Tigani,它执行 SELECT table_id FROM 。TABLES_SUMMARY获取要查询 的相关表 如何在 BigQuery 中使用 TABLE_QUERY() 函数?

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

标签: google-bigquery

解决方案


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

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

下面,我使用这两种方法查询了一个公共数据集:

首先,使用INFORMATION_SCHEMA.TABLES.

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

部分输出:

在此处输入图像描述

其次,使用__TABLES_SUMMARY__.

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

以及输出表的一部分,

在此处输入图像描述

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

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


推荐阅读