合并所有两个 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 都会使用位置来匹配列。