Sql 如何不在单个BigQuery表中复制记录,并从单个表中获取每月总计

Sql 如何不在单个BigQuery表中复制记录,并从单个表中获取每月总计,sql,google-bigquery,Sql,Google Bigquery,我有一个巨大的表(在BigQuery中是这样的),它本质上是一个事件日志。我正在尝试获取“新”记录的计数(上个月事件没有发生) 这些行看起来像: timestamp event_name number grouping_name Sep. 08, 2019, 04:35 a.m. imaginary name 12345 imaginary group Sep. 08, 2019, 04:35 a.m. imagin

我有一个巨大的表(在BigQuery中是这样的),它本质上是一个事件日志。我正在尝试获取“新”记录的计数(上个月事件没有发生)

这些行看起来像:

timestamp                    event_name        number   grouping_name
Sep. 08, 2019, 04:35 a.m.    imaginary name    12345    imaginary group
Sep. 08, 2019, 04:35 a.m.    imaginary name    98765    imaginary group
Oct. 14, 2019, 08:35 p.m.    imaginary name    12345    imaginary group
Nov. 16, 2019, 12:30 p.m.    imaginary name    12345    imaginary group
Nov. 16, 2019, 12:31 p.m.    imaginary name2   54321    imaginary group
我试图从中获得以下信息:

month   count
sep     2
oct     0
nov     1
因此,12345在9月份被计算在内,但不再计算

我尝试了多种方法,从使用到使用窗口函数,我似乎无法将一些有效的东西连接在一起

我最近一次失败的尝试是:

WITH eventlogs AS (
  SELECT *
  FROM mytable
  WHERE grouping = 'mygroup'
SELECT
  COUNT(DISTINCT number)
FROM (
  SELECT
    number, timestamp,
    FIRST_VALUE(EXTRACT(MONTH FROM DATE '2019-04-01')) OVER (PARTITION BY anothergroup ORDER BY timestamp ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
  FROM eventlog
  WHERE EXTRACT(MONTH FROM timestamp) = EXTRACT(MONTH FROM DATE '2019-04-30'))
查询没有返回错误,但结果肯定不正确。对于较小的数据集,这似乎很好:-(


任何帮助都将不胜感激:-)

对于每天的新项目计数,您可以这样做:

WITH data AS (
  SELECT *
  FROM `bigquery-public-data.wikipedia.pageviews_2019`
  WHERE DATE(datehour) BETWEEN "2019-09-01" AND "2019-09-10"
  AND wiki='es'
  AND title LIKE 'Abe%'
  AND views>10
)

SELECT first_day, COUNT(*) c, STRING_AGG(title LIMIT 10) new_items
FROM (
  SELECT title, TIMESTAMP_TRUNC(MIN(datehour), DAY) first_day
  FROM data
  GROUP BY title
)
GROUP BY first_day
ORDER BY first_day


TIMESTAMP\u TRUNC()
DAY
更改为
MONTH
,查看每月结果。

谢谢Felipe!那太好了!知道如何将完整的distinct total列添加到此查询中吗?最好将这两个结果合并在一个结果中,以便于观察:-D@Ruz . . . 你接受了这个答案。然而,我不知道这是如何获得“新记录的(上个月没有发生该事件)。@GordonLinoff你有其他建议吗?从表面上看,结果似乎不错,但我会做更多的测试。@GordonLinoff嗯,我现在的数据下降了99.8%,这几乎肯定是错误的。Wargh:-(99%下降?这是什么意思?请注意,上面的查询有一个
限制10
来显示新元素