在查询带有日期分区后缀的表时,我们对 Legacy SQL 和 Standard SQL 都有通配符功能。但是,我发现它们的工作方式并不完全相同,即使特定日期的表不存在,标准 SQL 也不会引发异常。
例如,我有一组名为 的表myTable_YYYYMMDD
,但缺少表 'myTable_20170601',然后,
在旧版 SQL中,
Select *
From table_date_range([project_id:datasetName.myTable_],
timestamp('20170601'), timestamp('20170601'))
它会给我[错误:查询:带有表通配符的 FROM 子句不匹配任何表(错误代码:invalidQuery) ]
在标准查询中,
Select *
From `project_id.datasetName.myTable_*`
where _table_suffix between '20170601' and '20170601'
即使该表不可用,这也会给我一个空结果而不是异常。
在这种情况下,如果我正在运行自动作业以再次查询表并且空表也是预期结果之一,那么我将不知道源表不存在,这会影响实际结果。
是否也可能在标准 SQL 中引发异常?
先感谢您。
在 BigQuery 问题跟踪器上添加功能请求