감사드립니다 BigQuery에 표준 SQL
주입니다 : 당신은 당신의 데이터의 간단한 예를 제공하고 아래에 다음 - 그래서 대신에 각 15 분 집계에, 각 2 초 집계를 사용합니다. 이것은 당신이 쉽게 테스트/재생할 수 있도록하기위한 것입니다. SECOND
을 3 곳에서 MINUTE
, 2
에서 15
까지 3 곳으로 변경하여 15 분으로 쉽게 조정할 수 있습니다. 또한이 예에서는 시간 필드에 TIME
데이터 유형을 사용하므로 예제에서는 24 시간으로 제한됩니다. 실제 데이터에는 DATETIME
또는 TIMESTAMP
일 가능성이 큽니다.
#standardSQL
WITH `project.dataset.table` AS (
SELECT TIME '00:00:00' time, 31 viewCount UNION ALL
SELECT TIME '00:00:01', 44 UNION ALL
SELECT TIME '00:00:02', 78 UNION ALL
SELECT TIME '00:00:03', 71 UNION ALL
SELECT TIME '00:00:04', 72 UNION ALL
SELECT TIME '00:00:05', 73 UNION ALL
SELECT TIME '00:00:06', 64 UNION ALL
SELECT TIME '00:00:07', 70
),
period AS (
SELECT MIN(time) min_time, MAX(time) max_time, TIME_DIFF(MAX(time), MIN(time), SECOND) diff
FROM `project.dataset.table`
),
checkpoints AS (
SELECT TIME_ADD(min_time, INTERVAL step SECOND) start_time, TIME_ADD(min_time, INTERVAL step + 2 SECOND) end_time
FROM period, UNNEST(GENERATE_ARRAY(0, diff + 2, 2)) step
)
SELECT start_time time, SUM(viewCount) viewCount
FROM checkpoints c
JOIN `project.dataset.table` t
ON t.time >= c.start_time AND t.time < c.end_time
GROUP BY start_time
ORDER BY start_time, time
및 결과는 다음과 같습니다 : -이 경우 당신은 또한 각각의 DATETIME_*
또는 TIMESTAMP_*
기능
모든 TIME_*
기능을 교체해야합니다 것은 그래서, 마지막으로 쿼리는
Row time viewCount
1 00:00:00 75
2 00:00:02 149
3 00:00:04 145
4 00:00:06 134
내 경험에 의하면 해결책을 주셔서 감사합니다 – sarath