当我从子选择中进行选择并最终想对结果进行“不在”时,BQ 查询会出现以下错误:
Error: Join attribute is not defined: t1.customer_id
例如,当我使用简单的 where t1.customer_id = 1 更改“不在”部分时,查询将执行。

该查询看起来不像连接,但从错误来看,BigQuery 似乎认为它是。

select t1.customer_id , GROUP_CONCAT(t1.id)  from  (
   select  customer.id as customer_id, id
  from (TABLE_QUERY(redacted , 'table_id in     ( "x_201502",     "x_201503")'))
  where created >= '2014-09-05 00:00:00'
  and created < '2015-03-04 00:00:00'
  group by customer_id, id
) t1
where  t1.customer_id not in (
  select customer.id as customer_id
  from (TABLE_QUERY(redacted , 'table_id in ("y_201503")'))
  where created >= '2015-03-03 18:55:59'
  group by customer_id
)
group by t1.customer_id;

我最初尝试将“not in”子选择放在子选择中,但 BQ 也为该方法抛出了错误,因此我正在尝试这种构造。请注意,在跟随 2 个子选择的连接时,“不在”部分确实有效。

关于如何在这种特殊情况下完成“不在”检查的任何想法?

最佳答案

这是 BigQuery 中的 SQL 不兼容问题。作为一种解决方法,我认为只使用 WHERE customer_id NOT IN (...) 应该可以。

关于google-bigquery - 没有加入的 BigQuery 查询会在 "not in"使用中出现加入错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28862789/

10-13 08:18