LabHub
배우기 러닝패스 코스

Apache Flink — 스트림을 엔진으로 돌린다 · 창 TVF 와 창 Top-N · 퀴즈

퀴즈: 창 TVF 와 창 Top-N

LabHub 에서 이어서 보기

6문항. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 10분 TUMBLE 창에서 09:10:00.000 에 딱 찍힌 주문은 어느 창에 들어가나?

    1. [09:00, 09:10) — 끝 시각을 포함하므로
    2. 두 창 모두 — 경계라서 양쪽에 한 번씩
    3. [09:10, 09:20) — 창은 시작을 포함하고 끝은 포함하지 않으므로
    4. 어느 창에도 — 경계 행은 늦은 행으로 버려진다
  2. `HOP(TABLE t, DESCRIPTOR(ts), INTERVAL '5' MINUTE, INTERVAL '10' MINUTE)` 로 센 창별 cnt 를 모두 더했더니 원래 행 수의 두 배였다. 무엇을 뜻하나?

    1. 정상이다 — 창이 절반씩 겹쳐 한 행이 size/slide = 2 개 창에 들어간다
    2. 워터마크가 늦어 창이 두 번 닫혔다
    3. 인자 순서가 바뀌어 5분 창이 10분마다 생겼다
    4. 스트리밍에서 -U/+U 가 섞여 두 번 셌다
  3. '오늘 0시부터 지금까지 10분마다 갱신되는 누적 매출' 에 가장 알맞은 창은?

    1. TUMBLE(10분) 결과를 바깥에서 무한 SUM 으로 더한다
    2. HOP(slide 10분, size 1일)
    3. SESSION(gap 10분)
    4. CUMULATE(step 10분, size 1일)
  4. SESSION(PARTITION BY shop, gap 5분) 결과에서 한 세션의 window_end 가 가리키는 것은?

    1. 세션 시작 + 5분
    2. 그 가게의 마지막 주문 시각 + 5분
    3. 그 가게의 마지막 주문 시각
    4. 다음 세션의 시작 시각
  5. 창 Top-N 을 쓰면서 `PARTITION BY window_start, window_end` 를 빼고 `PARTITION BY shop` 만 두었다. 무엇이 달라지나?

    1. 창 Top-N 이 아니라 일반 Top-N 이 되어 순위가 바뀔 때마다 갱신 로그를 내고 상태를 계속 쥔다
    2. 아무것도 달라지지 않는다 — 창 TVF 위이므로 창별로 나뉜다
    3. 창마다 상위 N 개가 아니라 전체에서 N 개만 나오지만 여전히 창이 닫힐 때 한 번 낸다
    4. 옵티마이저가 창 열을 자동으로 추가한다
  6. 창 집계의 결과 로그에 +I 만 있고 -U/+U 가 없는 이유는?

    1. 창 집계는 배치 모드로만 돌기 때문이다
    2. sql-client 가 창 결과의 갱신 로그를 숨기기 때문이다
    3. 창이 끝날 때 최종 결과만 한 번 내고 그 창의 상태를 지우기 때문이다
    4. 창 집계는 키가 없어 업서트로 보내기 때문이다