有没有办法只在表存在时才有条件地在BigQuery查询中生成SELECT?

时间:2017-05-24 12:13:18

标签: google-bigquery

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

有没有办法编写一个BQ SQL查询,以便它对some_table if 进行SELECT,并且仅在命名表存在时才生成,否则不返回任何行?

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

#standardSQL
SELECT COUNT(1) AS table_count
FROM `my-project:blah.__TABLES_SUMMARY__`
WHERE table_id = 'some-table-name-2017-04-02'

但是我们正在尝试在Dataflow中完成一项工作,并且很难首先在数据流控制结构之外进行这些查询。

有没有办法在单个SQL语句中将上面的查询与针对该表'some-table-name-2017-04-02'的SELECT结合使用,如果表不存在,我们只是没有回来的行,而不是错误?

问题是,如果BigQuery SQL解析器引用不存在的表名,即使没有对该表进行查询,它也不会编译查询。

1 个答案:

答案 0 :(得分:0)

在这里你可以检查一下

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