BigQuery - 在同一查询的另一部分中引用子查询的结果

Pau*_*vis 0 sql google-bigquery

我经常在我的查询中遇到以下问题,我在这个问题中构建了一个大型复杂的子查询,我想在同一个查询中引用多次(但可能会稍微过滤一下):

Select * FROM (BIG SUB QUERY WHERE field='one') as a
INNER JOIN 
(SAME BIG SUB QUERY WHERE field = 'two') as b
ON a.id = b.id
Run Code Online (Sandbox Code Playgroud)

我想避免使用临时表,因为我正在使用BigQuery并且只想执行一个查询(为了速度).有没有办法保持子查询并在别处引用它们?如果我复制并粘贴BIG SUB QUERY文本,Big Query是否会被优化以有效地运行几乎相同的SUB QUERIES?

Mik*_*ant 5

您应该使用BigQuery Standard SQL

WITH BIG_SUB_QUERY AS (
  YOUR 
  BIG SUB QUERY 
  HERE
)
SELECT * FROM BIG_SUB_QUERY AS a
INNER JOIN BIG_SUB_QUERY AS b
ON a.id = b.id AND a.field='one' AND b.field='two'
Run Code Online (Sandbox Code Playgroud)

查看WITH Clause的更多详细信息