SEQ1 / SEQ2 / SEQ4 / SEQ8

SEQ1 / SEQ2 / SEQ4 / SEQ8

래핑(wrap-around)이 있는 단조 증가하는 정수 시퀀스를 반환해요. 래핑은 정수 너비(1, 2, 4, 8바이트)에서 표현 가능한 가장 큰 정수 이후에 발생해요.

중요: 이 함수는 시퀀스를 사용해 고유한 증가 정수 집합을 생성하지만, 반드시 빈틈 없는(gap-free) 시퀀스를 만들어내는 것은 아니에요. 대량의 데이터를 처리할 때는 시퀀스에 빈틈이 생길 수 있어요. 완전히 순서가 정해진 빈틈 없는 시퀀스가 필요하면 ROW_NUMBER 윈도우 함수를 사용하는 것을 고려해요. Snowflake에서 시퀀스에 대한 자세한 내용은 Using Sequences를 참고해요.

출처: Snowflake SQL Reference - SEQ1 / SEQ2 / SEQ4 / SEQ8

본문

구문

SEQ1( [0|1] )

SEQ2( [0|1] )

SEQ4( [0|1] )

SEQ8( [0|1] )

사용상 주의사항

  • 선택적 부호(sign) 인자가 0이면 래핑 후 시퀀스가 0에서 계속돼요. 선택적 부호 인자가 1이면 주어진 정수 너비를 기준으로 표현 가능한 가장 작은 수에서 계속돼요.
  • 기본 부호 인자는 0이에요.

예시

시퀀스를 사용하는 기본적인 예시들이에요.

SELECT seq8() FROM table(generator(rowCount => 5));

+--------+
| SEQ8() |
|--------|
|      0 |
|      1 |
|      2 |
|      3 |
|      4 |
+--------+

SELECT * FROM (SELECT seq2(0), seq1(1) FROM table(generator(rowCount => 132))) ORDER BY seq2(0) LIMIT 7 OFFSET 125;

+---------+---------+
| SEQ2(0) | SEQ1(1) |
|---------+---------|
|     125 |     125 |
|     126 |     126 |
|     127 |     127 |
|     128 |    -128 |
|     129 |    -127 |
|     130 |    -126 |
|     131 |    -125 |
+---------+---------+

ROW_NUMBER를 사용해 빈틈 없는 시퀀스를 생성하는 방법을 보여주는 예시예요.

SELECT ROW_NUMBER() OVER (ORDER BY seq4())
    FROM TABLE(generator(rowcount => 10));
+-------------------------------------+
| ROW_NUMBER() OVER (ORDER BY SEQ4()) |
|-------------------------------------|
|                                   1 |
|                                   2 |
|                                   3 |
|                                   4 |
|                                   5 |
|                                   6 |
|                                   7 |
|                                   8 |
|                                   9 |
|                                  10 |
+-------------------------------------+

더 알아보기