如何创建一个新的 table 只保留 Bigquery 中相同 id 下超过 5 条数据记录的行

How to create a new table that only keeps rows with more than 5 data records under the same id in Bigquery

我有一个 table 这样的:

Id Date Steps Distance
1 2016-06-01 1000 1

这个table有1000多条记录和50个id,大部分id有20条左右,有的id只有1、2条记录,我觉得没什么用。 我想创建一个 table 来排除那些少于 5 条记录的 ID。 我写了这段代码来查找我想要排除的 ID:

SELECT  
  Id,
  COUNT(Id) AS num_id
FROM `table` 
GROUP BY 
  Id
ORDER BY
  num_id 

因为我只需要排除两个id,所以我使用WHERE子句:

CREATE TABLE `` AS
SELECT  
  *
FROM ``
WHERE
  Id <> 2320127002
  AND Id <> 7007744171

虽然我可以得到我想要的结果,但我认为有更好的方法可以解决这类问题。比如这个table里面有20多个id少于5条记录怎么办?谢谢。

考虑一下:

CREATE TABLE `filtered_table` AS
SELECT *
  FROM `table` 
 WHERE TRUE QUALIFY COUNT(*) OVER (PARTITION BY Id) >= 5

注意:如果 WHERE TRUE 在没有它的情况下成功运行,您可以删除它。