window
그룹화 식
적용 대상: Databricks SQL 검사 예 Databricks Runtime
타임스탬프 식 위에 도약 기반 슬라이딩 윈도우를 만듭니다.
구문
window(expr, width [, slide [, start] ] )
인수
expr
: 창의 제목을 지정하는 TIMESTAMP 식입니다.width
: 창의 너비를 INTERVAL DAY TO SECOND 리터럴로 나타내는 STRING 리터럴입니다.start
: INTERVAL DAY TO SECOND 리터럴로 표현된 다음 창의 시작을 나타내는 선택적 STRING 리터럴입니다.slide
: INTERVAL HOUR TO SECOND 리터럴로 표현되는 자정부터 시작까지의 오프셋을 나타내는 선택적 STRING 리터럴입니다.
반환
집계 함수를 사용하여 작동할 수 있는 그룹화 집합을 반환합니다.
GROUP BY 열 이름은 입니다 window
. 형식입니다. STRUCT<start:TIMESTAMP, end:TIMESTAMP>
slide
는 보다 작거나 같아야 합니다 width
.
start
는 보다 slide
작아야 합니다.
각 그룹의 행이 겹치는 경우 slide
<width
기본적으로 slide
는 width
와 같으므로 expr
는 그룹으로 분할됩니다.
창은 에서 1970-01-01 00:00:00 UTC + start
시작됩니다. 의 start
기본값은 '입니다 '0 SECONDS'
.
예
> SELECT window, min(val), max(val), count(val)
FROM VALUES (TIMESTAMP'2020-08-01 12:20:21', 17),
(TIMESTAMP'2020-08-01 12:20:22', 12),
(TIMESTAMP'2020-08-01 12:23:10', 8),
(TIMESTAMP'2020-08-01 12:25:05', 11),
(TIMESTAMP'2020-08-01 12:28:59', 15),
(TIMESTAMP'2020-08-01 12:30:01', 23),
(TIMESTAMP'2020-08-01 12:30:15', 2),
(TIMESTAMP'2020-08-01 12:35:22', 16) AS S(stamp, val)
GROUP BY window(stamp, '2 MINUTES 30 SECONDS', '30 SECONDS', '15 SECONDS');
{2020-08-01 12:19:15, 2020-08-01 12:21:45} 12 17 2
{2020-08-01 12:18:15, 2020-08-01 12:20:45} 12 17 2
{2020-08-01 12:20:15, 2020-08-01 12:22:45} 12 17 2
{2020-08-01 12:19:45, 2020-08-01 12:22:15} 12 17 2
{2020-08-01 12:18:45, 2020-08-01 12:21:15} 12 17 2
{2020-08-01 12:21:45, 2020-08-01 12:24:15} 8 8 1
{2020-08-01 12:22:45, 2020-08-01 12:25:15} 8 11 2
{2020-08-01 12:21:15, 2020-08-01 12:23:45} 8 8 1
{2020-08-01 12:22:15, 2020-08-01 12:24:45} 8 8 1
{2020-08-01 12:20:45, 2020-08-01 12:23:15} 8 8 1
{2020-08-01 12:23:45, 2020-08-01 12:26:15} 11 11 1
{2020-08-01 12:23:15, 2020-08-01 12:25:45} 11 11 1
{2020-08-01 12:24:45, 2020-08-01 12:27:15} 11 11 1
{2020-08-01 12:24:15, 2020-08-01 12:26:45} 11 11 1
{2020-08-01 12:27:15, 2020-08-01 12:29:45} 15 15 1
{2020-08-01 12:27:45, 2020-08-01 12:30:15} 15 23 2
{2020-08-01 12:28:45, 2020-08-01 12:31:15} 2 23 3
{2020-08-01 12:26:45, 2020-08-01 12:29:15} 15 15 1
{2020-08-01 12:28:15, 2020-08-01 12:30:45} 2 23 3
{2020-08-01 12:29:45, 2020-08-01 12:32:15} 2 23 2