google-bigquery - 有没有办法知道 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 中完成它)。
解决方案
您可以使用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'
推荐阅读
- javascript - 在 Nodejs Express 应用程序中单击按钮时启动/停止 cronjob
- node.js - 将 SSL 添加到 CometD
- python - 使用 Django 的“get_or_create()”方法自定义 SQL 参数
- sql-server - SQL Server Always Encryption - 查询卡在执行状态
- excel - 网页导航返回到第 1 页
- delphi - Delphi Spring Mock 对函数的引用
- javascript - 如何将 Carousel.Item 包装在其他组件中
- python - 如何将python3链接到特定版本的opencv?
- git - Powershell 未捕获彩色 Git 输出
- amazon-web-services - 如何传递 AWS Glue 外部 Spark 包?