Sql 在bigquery上创建子查询时发生左外部联接错误

Sql 在bigquery上创建子查询时发生左外部联接错误,sql,google-bigquery,subquery,left-join,Sql,Google Bigquery,Subquery,Left Join,我正试图从我的bq上的事件表中评估MAL、WAL和DAU 我创建了一个查询找到DAU和他一起找到WAU和MAU, 但它不起作用,我收到了以下错误: LEFT OUTER JOIN cannot be used without a condition that is an equality of fields from both sides of the join. 这是我的问题 WITH dau AS ( SELECT date, COUNT(DISTINCT(

我正试图从我的bq上的事件表中评估MAL、WAL和DAU

我创建了一个查询找到DAU和他一起找到WAU和MAU, 但它不起作用,我收到了以下错误:

LEFT OUTER JOIN cannot be used without a condition that is an equality of fields from both sides of the join.
这是我的问题

WITH dau AS (
  SELECT 
      date, 
      COUNT(DISTINCT(events.device_id)) as DAU_explorer         
  FROM `workspace.event_table` as events
  GROUP BY 1
)

SELECT  
  date, 
  dau, 
  (SELECT 
      COUNT(DISTINCT(device_id))  
     FROM `workspace.event_table` as events
     WHERE events.date BETWEEN DATE_ADD(dau.date, INTERVAL -30 DAY)  AND dau.date
     ) AS mau,
  (SELECT 
      COUNT(DISTINCT(device_id)) as DAU_explorer  
    FROM `workspace.event_table` as events
    WHERE events.date BETWEEN DATE_ADD(dau.date, INTERVAL -7 DAY)  AND dau.date
       ) AS wau
FROM dau
我的错误在哪里?无法在bq上运行这样的子查询吗?

请尝试以下操作:

WITH data AS (
  SELECT DATE(creation_date) date, owner_user_id device_id
  FROM `bigquery-public-data.stackoverflow.posts_questions` 
  WHERE EXTRACT(YEAR FROM creation_date)=2017
)

#standardSQL
SELECT DATE_SUB(date, INTERVAL i DAY) date_grp
 , COUNT(DISTINCT IF(i<31,device_id,null)) unique_30_day_users
 , COUNT(DISTINCT IF(i<8,device_id,null)) unique_7_day_users
FROM `data`, UNNEST(GENERATE_ARRAY(1, 30)) i
GROUP BY 1
ORDER BY date_grp
LIMIT 100
OFFSET 30

如果你想找一个。

@jaimerq,他已经在顶部提供了错误。:S谢谢,我没有意识到……@GabrelVelhoGhellere。在BigQueryAlas中不可能编写这样的查询。而且,这个错误不容易解决。谢谢@GordonLinoff,你知道用sql评估这个kpi的另一种方法吗?比如python中的.rolling30.sum和rolling7.sum?@Gabrielvelhoghhelle。这些不是简单一点的滚动计算。这些是滚动的不同计数。谢谢,这是非常有趣的处理数组的方法,我将阅读更多。很好用,谢谢。