BigQuery 似乎还不支持 UNION: https ://developers.google.com/bigquery/docs/query-reference
(我的意思不是为了源将表联合在一起。它有。)
是不是快到了?
BigQuery 似乎还不支持 UNION: https ://developers.google.com/bigquery/docs/query-reference
(我的意思不是为了源将表联合在一起。它有。)
是不是快到了?
如果您想要 UNION 以便可以组合查询结果,您可以在 BigQuery 中使用子选择:
SELECT foo, bar
FROM
(SELECT integer(id) AS foo, string(title) AS bar
FROM publicdata:samples.wikipedia limit 10),
(SELECT integer(year) AS foo, string(state) AS bar
FROM publicdata:samples.natality limit 10);
这几乎完全等同于 SQL
SELECT id AS foo, title AS bar
FROM publicdata:samples.wikipedia limit 10
UNION ALL
SELECT year AS foo, state AS bar
FROM publicdata:samples.natality limit 10;
(请注意,如果想要 SQL UNION 而不是 UNION ALL,这将不起作用)
或者,您可以运行两个查询并附加结果。
你总是可以这样做:
SELECT * FROM (query 1), (query 2);
它与以下内容相同:
SELECT * from query1 UNION select * from query 2;
请注意,如果您使用的是标准 SQL,则逗号运算符现在意味着JOIN
-如果您想要 union ,则必须使用UNION
语法:
在旧版 SQL 中,逗号运算符在应用于表时具有 UNION ALL 的非标准含义。在标准 SQL 中,逗号运算符具有 JOIN 的标准含义。
例如:
#standardSQL
SELECT
column_name,
count(*)
from
(SELECT * FROM me.table1 UNION ALL SELECT * FROM me.table2)
group by 1
这对我使用大查询的 StandardSQL 进行 UNION INTERSECT 非常有帮助。
#standardSQL
WITH
a AS (
SELECT
*
FROM
table_a),
b AS (
SELECT
*
FROM
table_b)
SELECT
*
FROM
a INTERSECT DISTINCT
SELECT
*
FROM
b
我从以下位置窃取/修改了这个示例: https ://gist.github.com/yancya/bf38d1b60edf972140492e3efd0955d0
确实支持工会。您发布的链接的摘录:
注意:与许多其他基于 SQL 的系统不同,BigQuery 使用逗号语法来表示表联合,而不是联合。这意味着您可以对具有兼容模式的多个表运行查询,如下所示:
// 发现几天内的可疑活动
SELECT FORMAT_UTC_USEC(event.timestamp_in_usec) AS time, request_url
FROM [applogs.events_20120501], [applogs.events_20120502], [applogs.events_20120503]
WHERE event.username = 'root' AND NOT event.source_ip.is_internal;