合并所有两个 table 而不是加入
union all two table instead of join
我有几个 table 我不能加入它们,因为它变得非常复杂并且 bigquery 无法处理它。所以我试图合并所有 tables 然后分组。在此过程中我遇到了问题。我有两个名为 t1 和 t2 的 table,下面是 headers,它们没有空值:
a. b. c. d. a. b. c. e.
因此,为了合并所有内容并将它们分组,我有以下代码:
WITH
all_tables_unioned AS (
SELECT
*,
NULL e
FROM
`t1`
UNION ALL
SELECT
*,
NULL d
FROM
`t2` )
SELECT
a,
b,
c,
MAX(d) AS d,
MAX(e) AS e
FROM
all_tables_unioned
GROUP BY
a,
b,
c
不幸的是,当我 运行 得到一个 table a,b,c,d,e 时,e 列全为空!
我试图在 union all 之前 运行 查询每个 table 以确保它们不为空。我真的不知道我的查询有什么问题。
union all
不按 列 命名。只需明确列出所有列:
WITH all_tables_unioned AS (
SELECT a, b, c, d, NULL as e
FROM `t1`
UNION ALL
SELECT a, b, c, NULL as d, e
FROM `t2`
)
无论您指定什么名称,union all
都会使用位置来匹配列。
我有几个 table 我不能加入它们,因为它变得非常复杂并且 bigquery 无法处理它。所以我试图合并所有 tables 然后分组。在此过程中我遇到了问题。我有两个名为 t1 和 t2 的 table,下面是 headers,它们没有空值:
a. b. c. d. a. b. c. e.
因此,为了合并所有内容并将它们分组,我有以下代码:
WITH
all_tables_unioned AS (
SELECT
*,
NULL e
FROM
`t1`
UNION ALL
SELECT
*,
NULL d
FROM
`t2` )
SELECT
a,
b,
c,
MAX(d) AS d,
MAX(e) AS e
FROM
all_tables_unioned
GROUP BY
a,
b,
c
不幸的是,当我 运行 得到一个 table a,b,c,d,e 时,e 列全为空! 我试图在 union all 之前 运行 查询每个 table 以确保它们不为空。我真的不知道我的查询有什么问题。
union all
不按 列 命名。只需明确列出所有列:
WITH all_tables_unioned AS (
SELECT a, b, c, d, NULL as e
FROM `t1`
UNION ALL
SELECT a, b, c, NULL as d, e
FROM `t2`
)
无论您指定什么名称,union all
都会使用位置来匹配列。