Google bigquery 是否只有在表存在的情况下,才可以有条件地在BigQuery查询中进行选择?

Google bigquery 是否只有在表存在的情况下,才可以有条件地在BigQuery查询中进行选择?,google-bigquery,Google Bigquery,我有一个应用程序,它必须查询数百个BigQuery表(在一个数据流作业中),其中一些可能不存在(每天发生的事件有以天命名的表,有些天可能没有创建一些表) 有没有一种方法可以编写一个BQ SQL查询,这样当且仅当命名表存在时,它才会对某个表进行选择,否则不会返回任何行 有人发布了一个查询,如果表存在,则返回该查询 #standardSQL SELECT COUNT(1) AS table_count FROM `my-project:blah.__TABLES_SUMMARY__` WHERE t

我有一个应用程序,它必须查询数百个BigQuery表(在一个数据流作业中),其中一些可能不存在(每天发生的事件有以天命名的表,有些天可能没有创建一些表)

有没有一种方法可以编写一个BQ SQL查询,这样当且仅当命名表存在时,它才会对某个表进行选择,否则不会返回任何行

有人发布了一个查询,如果表存在,则返回该查询

#standardSQL
SELECT COUNT(1) AS table_count
FROM `my-project:blah.__TABLES_SUMMARY__`
WHERE table_id = 'some-table-name-2017-04-02'
但是我们正试图在数据流中完成一项工作,并且很难首先在数据流控制结构之外进行这些查询

有没有一种方法可以将上面的查询与针对该表“some-table-name-2017-04-02”的SELECT组合在一个SQL语句中,这样,如果该表不存在,我们就不会返回任何行,而不会返回错误


问题是,如果BigQuerySQL解析器引用了一个不存在的表名,即使没有对该表进行任何查询,它也不会编译查询

在这里您可以查看budd

 if not exists
(select * from sysobjects where name="my table")
begin
 execute "create table mytable(x int)"
 end

如果您每天只有一个带有模式的表,其中的数据按日期、事件和所需的所有其他内容分隔,那么它是否适合您,而不是有数百个表?这样,您就可以保证每天都有表,并且如果某个查询没有返回给定日期和事件的数据,就不会出现问题。