cast - Soporta la función UNION en BigQuery SQL
if big query (6)
BigQuery agregó recientemente soporte para SQL estándar , incluida la operación UNION
.
Al enviar una consulta a través de la interfaz de usuario web, solo asegúrese de desmarcar "Usar SQL heredado" en la rúbrica de la versión SQL:
BigQuery no parece tener soporte para UNION todavía: https://developers.google.com/bigquery/docs/query-reference
(No me refiero a unir tablas para la fuente. Tiene eso.)
¿Viene pronto?
Esto me ayudó mucho a hacer un UNION INTERSECT con StandardSQL de gran consulta.
#standardSQL
WITH
a AS (
SELECT
*
FROM
table_a),
b AS (
SELECT
*
FROM
table_b)
SELECT
*
FROM
a INTERSECT DISTINCT
SELECT
*
FROM
b
STOLE / MODIFICADO ESTE EJEMPLO DESDE: https://gist.github.com/yancya/bf38d1b60edf972140492e3efd0955d0
Los sindicatos son de hecho apoyados. Un extracto del enlace que publicaste:
Nota: A diferencia de muchos otros sistemas basados en SQL, BigQuery usa la sintaxis de coma para indicar uniones de tablas, no uniones. Esto significa que puede ejecutar una consulta en varias tablas con esquemas compatibles de la siguiente manera:
// Encuentra actividad sospechosa durante varios días.
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;
Si desea UNION para poder combinar los resultados de la consulta, puede usar subselecciones en 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);
Esto es casi exactamente equivalente al 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;
(tenga en cuenta que si quiere SQL UNION y no UNION ALL esto no funcionará)
Alternativamente, puede ejecutar dos consultas y anexar el resultado.
Siempre puedes hacer:
SELECT * FROM (query 1), (query 2);
Hace lo mismo que:
SELECT * from query1 UNION select * from query 2;
Tenga en cuenta que, si está utilizando SQL estándar, el operador de coma ahora significa JOIN
- debe usar la sintaxis de UNION
si desea una unión :
En SQL heredado, el operador de coma tiene el significado no estándar de UNION ALL cuando se aplica a las tablas. En el SQL estándar, el operador de coma tiene el significado estándar de UNIR.
Por ejemplo:
#standardSQL
SELECT
column_name,
count(*)
from
(SELECT * FROM me.table1 UNION ALL SELECT * FROM me.table2)
group by 1