google-bigquery - sql - BigQuery如何自动处理"重复列名称"

147 2

我正在使用一个数据集,(a)通常需要连接表,但是(b)经常有重复的列名,编写查询:


SELECT 


 t1.*, t2.*


FROM t1 


LEFT JOIN t2 ON t1.this_id = t2.matching_id



我得到了错误 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是否可以自动处理/重命名列(比如,使用表名称对列进行前缀,而不是允许所有的查询都放在一起?

谢谢!

时间: 原作者:

106 3

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


SELECT t1, t2


FROM t1 LEFT JOIN


 t2


 ON t1.this_id = t2.matching_id;



如果你希望将结果作为列而不是记录(它们在结果中看起来没有太大不同),则可以使用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;



原作者:
63 3

BigQuery旧版SQL可以实现这一点-除非你要处理数据类型或使用某些特定于标准sql的函数/功能,否则这对于数据探索可能非常方便,


#legacySQL


SELECT t1.*, t2.*


FROM table1 AS t1 


LEFT JOIN table2 AS t2 


ON t1.this_id = t2.matching_id 



输出中所有列名称都将以各自的别名作为前缀,例如,t1_this_id和t2_matching_id,

原作者:
...