메인 콘텐츠로 건너뛰기
시계열 데이터를 다룰 때는 데이터 누락이나 활동이 없는 기간 때문에 중간에 빈 구간이 생길 수 있습니다. 일반적으로 데이터를 쿼리할 때는 이런 빈 구간이 없도록 하는 것이 좋습니다. 이때 WITH FILL 절이 유용합니다. 이 가이드에서는 WITH FILL을 사용해 시계열 데이터의 빈 구간을 채우는 방법을 설명합니다.

준비

GenAI 이미지 서비스에서 생성한 이미지의 메타데이터를 저장하는 다음과 같은 테이블이 있다고 가정하겠습니다:
레코드 몇 개를 가져오겠습니다:

버킷 기준 쿼리

2023년 3월 24일 00:24:03부터 00:24:04 사이에 생성된 이미지를 살펴보겠습니다. 이를 위해 해당 시점에 대한 매개변수를 몇 개 만들어 보겠습니다:
다음으로, 데이터를 100ms 단위의 버킷으로 그룹화하고 각 버킷에서 생성된 이미지 수를 반환하는 쿼리를 작성합니다:
결과 집합에는 이미지가 생성된 버킷만 포함되지만, 시계열 분석에서는 엔트리가 없더라도 각 100ms 버킷을 모두 반환해야 할 수 있습니다.

WITH FILL

이러한 빈 구간은 WITH FILL 절을 사용해 채울 수 있습니다. 또한 STEP도 지정하겠습니다. 이는 채울 빈 구간의 크기입니다. DateTime 타입에서는 기본값이 1초이지만, 여기서는 100ms 길이의 빈 구간을 채우려고 하므로 간격 값으로 100ms 인터벌을 사용하겠습니다:
count 컬럼에서 빈 구간이 0으로 채워진 것을 확인할 수 있습니다.

WITH FILL…FROM

하지만 시간 범위 시작 부분에는 여전히 빈 구간이 남아 있으며, FROM을 지정해 이를 해결할 수 있습니다:
결과를 보면 이제 00:24:03.000부터 00:24:03.500까지의 버킷이 모두 표시됩니다.

WITH FILL…TO

다만 시간 범위 끝부분의 일부 버킷이 아직 누락되어 있으며, 이는 TO 값을 지정해 채울 수 있습니다. TO는 끝값을 포함하지 않으므로, 끝 시간이 포함되도록 여기에 소량을 더하겠습니다:
누락된 구간이 이제 모두 채워졌으며, 00:24:03.000부터 00:24:05.000까지 100ms 간격으로 모든 레코드가 있습니다.

누적 개수

이제 여러 버킷에 걸쳐 생성된 이미지 수의 누적 개수를 유지하려고 한다고 가정해 보겠습니다. 아래와 같이 cumulative 컬럼을 추가하면 됩니다.
누적 컬럼의 값이 의도한 대로 동작하지 않습니다.

WITH FILL…INTERPOLATE

count 컬럼이 0인 모든 행에서는 누적 컬럼도 0이 되지만, 여기서는 cumulative 컬럼의 이전 값을 사용하도록 하는 것이 더 적절합니다. 아래와 같이 INTERPOLATE 절을 사용하면 됩니다:
훨씬 보기 좋아졌습니다. 이제 마무리로 bar 함수를 사용해 막대 차트를 추가하고, 새 컬럼도 INTERPOLATE 절에 넣는 것을 잊지 마십시오.
마지막 수정일 2026년 6월 10일