Google bigquery 用于自联接的通配符的BigQuery全局别名

Google bigquery 用于自联接的通配符的BigQuery全局别名,google-bigquery,Google Bigquery,通常我需要将一个表连接到它自己,并基于匹配谓词,打印出两个表中的所有列。e、 g 选择t1.*,t2* 从't`t1 加入't`t2 使用(Id) 其中xxxx 问题是,您会遇到列名冲突,因为它们在每个列中都是相同的源表/列 有没有办法避免这种情况,但仍然使用“*”?我检查了文档,在standardSQL中看不到任何选项 理想情况下,我只希望将前缀应用于通配符投影,而不是单独/手动地手动为每个列别名,因为我们的许多表都非常宽,而且会发生变化,手动拖动非常费力 e、 g我希望能够这样做,在T2的每

通常我需要将一个表连接到它自己,并基于匹配谓词,打印出两个表中的所有列。e、 g

选择t1.*,t2*
从't`t1
加入't`t2
使用(Id)
其中xxxx

问题是,您会遇到列名冲突,因为它们在每个列中都是相同的源表/列

有没有办法避免这种情况,但仍然使用“*”?我检查了文档,在standardSQL中看不到任何选项

理想情况下,我只希望将前缀应用于通配符投影,而不是单独/手动地手动为每个列别名,因为我们的许多表都非常宽,而且会发生变化,手动拖动非常费力

e、 g我希望能够这样做,在T2的每一列前面加上字符串“T2_”

选择t1.*,t2.*前缀(“t2_”)
从't`t1
加入't`t2
使用(Id)
其中xxxx

目前可能没有像这样干净的解决方案,除非我在文档中遗漏了它(希望如此!),如果有任何使用其他方法的临时SQL解决方案,请让我知道


谢谢

只需选择
t1
t2

SELECT t1, t2 FROM `t` t1 JOIN `t` t2 USING(Id) WHERE xxxx

只需选择
t1
t2

SELECT t1, t2 FROM `t` t1 JOIN `t` t2 USING(Id) WHERE xxxx

下面的方法有点争议,因为它指向BigQuery遗留SQL中的功能——但为什么不在方便的时候使用它们呢:o)

所以,下面是BigQuery遗留SQL,您可以使用它来获得所需的结果。如果您需要标准SQL的功能来进一步处理该结果,只需将其保存在临时表中,然后用于进一步处理即可

同时,下面的代码不要求您指定列,结果是平坦的

#legacySQL
SELECT *
FROM [project:dataset.table] t1
JOIN [project:dataset.table] t2
ON t1.Id = t2.Id  
WHERE xxxx    

这里的技巧是,表中别名为t1-的所有列都将以
t1\u
作为前缀,比如
t1\u col1、t1\u col2
等等;t2中的所有列都将以
t2\u
作为前缀,比如
t2\u col1、t2\u col2
等等-因此,没有
列名冲突

下面的方法有点争议,因为它指向BigQuery遗留SQL中的功能-但为什么不在方便时使用它们呢:o)

所以,下面是BigQuery遗留SQL,您可以使用它来获得所需的结果。如果您需要标准SQL的功能来进一步处理该结果,只需将其保存在临时表中,然后用于进一步处理即可

同时,下面的代码不要求您指定列,结果是平坦的

#legacySQL
SELECT *
FROM [project:dataset.table] t1
JOIN [project:dataset.table] t2
ON t1.Id = t2.Id  
WHERE xxxx    

这里的技巧是,表中别名为t1-的所有列都将以
t1\u
作为前缀,比如
t1\u col1、t1\u col2
等等;t2中的所有列都将以
t2\u
作为前缀,如
t2\u col1、t2\u col2
等等-因此没有
列名冲突

lol-尼斯简单选项:)。我试着把整个结果集变平是唯一的事情,但是,也许这需要做。lummeded.lol-非常简单的选项:)。我试着把整个结果集变平是唯一的事情,但是,也许这需要做。感谢。在输出中拥有所有列的副本的实际用途是什么?我想我可以看到很少这样的用例:o)但仍然很好奇你的用例到底是什么-如果你能分享我的用例是比较bq版本(例如视图)的输出(增量/差异)与上一版本认证的黄金参考表。我们观点的回归测试形式。它们是相同的表输出,相同的列,但我想找出差异,当我这样做时,输出golden和current release中的所有COL。扁平化的原因也是Tableau(我们在这里报告bq回归结果)不幸的是,更喜欢这样的数据平面…下面的Elliotts响应实现了除平面化以外的一般需求。我们正在构建一些通用表,将SQL与_JSON_字符串进行比较,只是尝试平面化输出,而不是拥有顶级记录/结构…谢谢!在输出中拥有所有列的副本的实际用途是什么?我想我可以看到很少这样的用例:o)但仍然很好奇你的用例到底是什么-如果你能分享我的用例是将bq版本(例如视图)的输出(增量/差异)与上一版本认证的黄金参考表进行比较。我们观点的回归测试形式。它们是相同的表输出,相同的列,但我想找出差异,当我这样做时,输出golden和current release中的所有COL。扁平化的原因也是Tableau(我们在这里报告bq回归结果)不幸的是,更喜欢这样的数据平面…下面的Elliotts响应实现了除平面化以外的一般需求。我们正在构建一些通用表,将SQL与_JSON_字符串进行比较,只是尝试平面化输出,而不是拥有顶级记录/结构…谢谢!酷!我总是遇到这样的问题,标准SQL视图无法调用legacySQL视图来弥补这些功能缺陷,但是,对于我的用例来说,在这种情况下,这可能不是问题……让我试一试……感谢并继续为BQ做出色的社区英雄工作!:)酷!我总是遇到这样的问题,标准SQL视图无法调用legacySQL视图来弥补这些功能缺陷,但是,对于我的用例来说,在这种情况下,这可能不是问题……让我试一试……感谢并继续为BQ做出色的社区英雄工作!:)