Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 带有UNNEST、LEFT JOIN和WHERE语句的Bigquery_Sql_Google Bigquery - Fatal编程技术网

Sql 带有UNNEST、LEFT JOIN和WHERE语句的Bigquery

Sql 带有UNNEST、LEFT JOIN和WHERE语句的Bigquery,sql,google-bigquery,Sql,Google Bigquery,以下带有UNNEST和LEFT JOIN的查询将添加带有日期的空0行: SELECT cal_day, count(e.datetime) AS cnt FROM UNNEST( GENERATE_DATE_ARRAY(DATE('2018-12-10'), CURRENT_DATE(), INTERVAL 1 DAY) ) AS cal_day LEFT JOIN `eventlogs` e ON cal_day = CAST( T

以下带有UNNEST和LEFT JOIN的查询将添加带有日期的空0行:

   SELECT cal_day, count(e.datetime) AS cnt
    FROM UNNEST(
        GENERATE_DATE_ARRAY(DATE('2018-12-10'), CURRENT_DATE(), INTERVAL 1 DAY)
    )  AS cal_day
    LEFT JOIN `eventlogs`  e
      ON cal_day = CAST( TIMESTAMP_MICROS( CAST(CAST(e.datetime AS NUMERIC)*1000 AS INT64)) AS DATE)
    # WHERE ( CAST(datetime AS NUMERIC) > 1544375081371.431 ) AND message LIKE '%mymessage%' 
    GROUP BY cal_day 
    ORDER BY cal_day
    LIMIT 10000
结果致:

1   2018-12-10 00:00:00 UTC 561
2   2018-12-11 00:00:00 UTC 1473
3   2018-12-12 00:00:00 UTC 650
4   2018-12-13 00:00:00 UTC 407
5   2018-12-14 00:00:00 UTC 283
6   2018-12-15 00:00:00 UTC 1
6   2018-12-16 00:00:00 UTC 0
7   2018-12-17 00:00:00 UTC 213
8   2018-12-18 00:00:00 UTC 583
当我添加WHERE子句时,情况并非如此。如何将message='mymessage'添加到unnest中,以便在WHERE中获得0个计数日期

#standardSQL
SELECT cal_day, IFNULL(cnt, 0) AS cnt 
FROM UNNEST(
    GENERATE_DATE_ARRAY(DATE('2018-12-10'), CURRENT_DATE(), INTERVAL 1 DAY)
)  AS cal_day
LEFT JOIN (
  SELECT 
    CAST( TIMESTAMP_MICROS( CAST(CAST(datetime AS NUMERIC)*1000 AS INT64)) AS DATE) AS day, 
    COUNT(datetime) AS cnt 
  FROM `eventlogs`
  WHERE (CAST(datetime AS NUMERIC) > 1544375081371.431 ) 
  AND message LIKE '%mymessage%' 
  GROUP BY day 
) e
ON cal_day = e.day
ORDER BY cal_day
LIMIT 10000   
如您所见,我刚刚将过滤逻辑移到了subselect中