繁体   English   中英

有没有办法只在表存在的情况下有条件地在BigQuery查询中进行SELECT?

[英]Is there a way to make a SELECT in BigQuery query conditionally only if a table exists?

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

有没有办法编写BQ SQL查询,以便且仅当命名表存在时才对some_table进行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解析器引用不存在的表名,即使没有对该表进行查询,它也不会编译查询。

在这里你可以查看佛

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM