如何创建一个新的 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
在没有它的情况下成功运行,您可以删除它。
我有一个 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
在没有它的情况下成功运行,您可以删除它。