我有一个应用程序,必须查询数百个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解析器引用不存在的表名,即使没有对该表进行查询,它也不会编译查询。
答案 0 :(得分:0)
在这里你可以检查一下
if not exists
(select * from sysobjects where name="my table")
begin
execute "create table mytable(x int)"
end