【发布时间】:2020-01-30 20:14:49
【问题描述】:
我正在考虑组织一个包含多个表的 BigQuery 数据集,我可以使用通配符进行查询。
在此用例中,可能会有 1000 多个表,每个表代表不同的客户。我需要能够单独查询它们,并且我还需要同时查询它们。
我正在考虑使用多个表而不是单个表进行集群,因为在仅为特定客户运行查询时,我希望能够只扫描我需要的数据。
Quotas and limits 页面列出了以下看起来适用的限制:
- 每个查询引用的最大表数 - 1,000
- 已解决的旧版和标准 SQL 查询的最大长度 - 12 MB
- 解析查询长度的限制包括查询引用的所有视图和通配符表的长度。
我的问题是:
1) 使用通配符(例如 SELECT * FROM `project_id.dataset_id.table_*`)运行查询时,是否所有与通配符匹配的单个表都计入此 1000 个表的限制?
2) 12 MB 的限制究竟计算了什么?例如,假设我有以下表格project_id.dataset_id.table_1、project_id.dataset_id.table_2、project_id.dataset_id.table_3。
- 如果我在
table_*上运行SELECT,解析后的查询长度是多少?是否包含所有表的完全限定名(project_id.dataset_id.table_1、project_id.dataset_id.table_2、project_id.dataset_id.table_3)? - 如果我使用通配符
table_*但在_TABLE_SUFFIX上包含一个过滤器(例如,WHERE _TABLE_SUFFIX = "1"),这是否会从已解析的查询中消除与过滤器不匹配的表?
3) 是否还有其他需要注意的限制?
提前谢谢你。
【问题讨论】:
标签: google-bigquery