2017-05-24 14 views
0

我有一个应用程序必须查询数百个BigQuery表格(在Dataflow作业中),其中一些可能不存在(每天发生的事件以日期命名,某些表格可能没有日期被创建)。只有当表存在时,有没有办法在BigQuery查询中有条件地创建SELECT?

有没有办法写一个BQ SQL查询,使得它对select_table 产生一个SELECT如果,并且只有命名表存在,否则不返回行?

有人张贴了一个查询,如果一个表存在

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

但我们正试图在数据流做的工作,它很难让外界第一次数据流控制结构的这些查询返回。

有没有一种方法可以在单个SQL语句中将上述查询与SELECT对该表'some-table-name-2017-04-02'进行组合,如果该表不存在,我们只是没有回来的行,而不是一个错误?

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

+0

而不必数百个表会为你工作,如果你有每天只有一个表,你必须按日期,事件和一切你分离数据架构的需要?通过这种方式,您可以保证每天都有表格,并且如果某个查询未返回给定日期和事件的数据,则不会出现问题。 –

回答

0

在这里,您可以查看巴德

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