SEQ1 / SEQ2 / SEQ4 / SEQ8
SEQ1 / SEQ2 / SEQ4 / SEQ8
래핑(wrap-around)이 있는 단조 증가하는 정수 시퀀스를 반환해요. 래핑은 정수 너비(1, 2, 4, 8바이트)에서 표현 가능한 가장 큰 정수 이후에 발생해요.
중요: 이 함수는 시퀀스를 사용해 고유한 증가 정수 집합을 생성하지만, 반드시 빈틈 없는(gap-free) 시퀀스를 만들어내는 것은 아니에요. 대량의 데이터를 처리할 때는 시퀀스에 빈틈이 생길 수 있어요. 완전히 순서가 정해진 빈틈 없는 시퀀스가 필요하면 ROW_NUMBER 윈도우 함수를 사용하는 것을 고려해요. Snowflake에서 시퀀스에 대한 자세한 내용은 Using Sequences를 참고해요.
본문
구문
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 |
+-------------------------------------+