首页 > 解决方案 > 有没有办法知道 BigQuery Standard SQL 中通配符聚合了多少表?

问题描述

假设我在 BigQuery 中有表格,格式为 table_name_YYYYMMDD。我知道在标准 SQL 中,您可以使用通配符和 _TABLE_SUFFIX 来选择查询中的一系列表,如下所示:

SELECT
  user_id
FROM `project.dataset.table_name_*`
WHERE _TABLE_SUFFIX BETWEEN '20200520' AND '20200525'

我的问题是是否有办法告诉最终实际选择的表数(即 20200520、20200521、20200522、20200523、20200524、20200525 将是 6 个表)。

就我而言,我有一个使用 30 个表来创建每月摘要的查询,但有时这 30 个表中的一个或多个可能不存在,在这种情况下,我想抛出一个错误,而不是静默查询少于 30 个表我预计。(我知道这可以在带有 TABLE_DATE_RANGE 的旧版 SQL 中完成,但我想知道是否有办法在标准 SQL 中完成它)。

标签: google-bigquery

解决方案


您可以使用Jobs.Get API来查看referencedTables查询所涉及的所有表的数组的属性

或者您可以使用INFORMATION_SCHEMA.TABLES来简单地计算与您的模式匹配的表的数量。就像是

SELECT COUNT(1) 
FROM yourDataset.INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME BETWEEN 'table_name_20200520' AND 'table_name_20200525'

推荐阅读