google-bigquery - 大查询是否为标准 SQL 执行 __TABLES_SUMMARY__
问题描述
我们在 Big Query 中有一个包含超过 500000 个表的数据集,当我们使用旧版 SQL 对该数据集运行查询时,它会引发错误
根据 Jordan Tigani,它执行 SELECT table_id FROM 。TABLES_SUMMARY获取要查询 的相关表 如何在 BigQuery 中使用 TABLE_QUERY() 函数?
使用 _TABLE_SUFFIX(标准 SQL)的查询是否执行TABLES_SUMMARY以获取要查询的相关表?
解决方案
根据文档 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 个,此处。
推荐阅读
- java - 如何解决Java Spring中日期的一日偏移问题
- javascript - 使用映射更改内部数组对象值与外部数组值
- node.js - 我可以在 Mongo DB 中使用点字符 (.) 作为字段名称吗?
- c# - 尝试创建多个唯一的短 URL
- javascript - React 使 axios 获取,返回错误:CORS 策略:请求的资源上不存在“Access-Control-Allow-Origin”标头
- c# - WinDbg 从符号中获取所有函数的地址
- javascript - 使用 Javascript 总结 iframe 中的所有按键
- python - 通过将元素设置为变量来迭代列表
- c# - RabbitMQ.Client Exceptions: '没有一个指定的端点是可达的'
- wordpress - profile.php 中的显示字段