[英]BigQuery if table exists query not working?
我正在处理一个查询,该查询将根据是否找到表返回不同的结果。 这是我的查询:
SELECT
SUM(IF(COUNT(table_id) > 0, 1, 0)) AS found
FROM `table.__TABLES__`
WHERE table_id = 'app_events_20170207'
我遇到的问题是
错误:[2:3]不允许聚合
我可能缺少一些简单的东西,但似乎无法查明。 任何帮助将是巨大的,谢谢!
最终产品将是一个查询,基于是否找到该表,运行一个查询,否则,运行另一个查询。
例如使用伪代码:
if (count(table_id) > 0, select * from table1, select * from table2)
您这里有聚合而不是聚合-这显然不起作用
另一方面,您可以通过以下方式轻松实现所需的工作-计算找到的表格
SELECT
COUNT(table_id) AS found
FROM `table.__TABLES__`
WHERE table_id = 'app_events_20170207'
回答更新的问题
假设(select from from table1)和(select * from table2)的输出具有相同的架构-您可以使用以下内容
#standardSQL
WITH switch AS (
SELECT
COUNT(table_id) AS found
FROM `table.__TABLES__`
WHERE table_id = 'app_events_20170207'
)
SELECT * FROM table1 WHERE ((SELECT MAX(found) FROM switch) > 0)
UNION ALL
SELECT * FROM table2 WHERE ((SELECT MAX(found) FROM switch) = 0)
您可以检查以下虚拟数据的行为:
#standardSQL
WITH table1 AS (
SELECT 1 AS a, 2 AS b
),
table2 AS (
SELECT 3 AS a, 4 AS b
),
switch AS (
SELECT
COUNT(table_id) AS found
FROM `table.__TABLES__`
WHERE table_id = 'app_events_20170207'
)
SELECT * FROM table1 WHERE ((SELECT MAX(found) FROM switch) > 0)
UNION ALL
SELECT * FROM table2 WHERE ((SELECT MAX(found) FROM switch) = 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.