BigQuery 如何自动处理左连接上的“重复列名”

Can*_*ice 1 sql google-bigquery

我正在处理一个表数据集,(a)通常需要将表连接在一起,但(b)也经常有重复的列名称。每当我编写如下查询时:

SELECT 
  t1.*, t2.*
FROM t1 
LEFT JOIN t2 ON t1.this_id = t2.matching_id
Run Code Online (Sandbox Code Playgroud)

...我收到错误Duplicate column names in the result are not supported. Found duplicate(s): this_col, that_col, another_col, more_cols, dupe_col, get_the_idea_col

我知道使用 BigQuery 时,最好*在选择表时避免使用,但是我的数据表不太大 + 我的 bigquery 预算很高,并且对所有列进行这些联接有助于显着地进行数据探索。

在这些情况下,BigQuery 是否可以自动处理/重命名列(例如,在列前加上表名前缀),而不是不允许同时进行查询?

谢谢!

Gor*_*off 6

最简单的方法是选择记录而不是列:

SELECT t1, t2
FROM t1 LEFT JOIN
     t2
     ON t1.this_id = t2.matching_id;
Run Code Online (Sandbox Code Playgroud)

这几乎就是我为临时查询所做的事情。

如果您希望结果作为列而不是记录(它们在结果中看起来没有太大不同),您可以使用EXCEPT

SELECT t1.* EXCEPT (duplicate_column_name),
       t2.* EXCEPT (duplicate_column_name),
       t1.duplicate_column_name as t1_duplicate_column_name,
       t2.duplicate_column_name as t2_duplicate_column_name
FROM t1 LEFT JOIN
     t2
     ON t1.this_id = t2.matching_id;
Run Code Online (Sandbox Code Playgroud)