カテゴリ:

データ生成関数

SEQ1 / SEQ2 / SEQ4 / SEQ8

単調に増加する整数のシーケンスをラップアラウンドで返します。ラップアラウンドは、整数幅の最大の表現可能な整数(1、2、4、または8バイト)の後に発生します。

重要

この関数は、シーケンスを使用して増加する整数の一意のセットを生成しますが、必ずしもギャップのないシーケンスを生成するわけではありません。大量のデータを処理する場合、シーケンスにギャップが生じることがあります。完全に順序付けられたギャップのないシーケンスが必要な場合は、 ROW_NUMBER ウィンドウ関数の使用を検討してください。

Snowflakeのシーケンスの詳細については、 シーケンスの使用 をご参照ください。

構文

SEQ1( [0|1] )

SEQ2( [0|1] )

SEQ4( [0|1] )

SEQ8( [0|1] )

使用上の注意

  • オプションの符号引数が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 |
+-------------------------------------+