Catégories :

Fonctions de génération de données

SEQ1 / SEQ2 / SEQ4 / SEQ8

Renvoie une séquence d’entiers monotones croissants, avec renvoi à la ligne. Le bouclage a lieu après le plus grand entier représentable de la largeur de l’entier (1, 2, 4 ou 8 octets).

Important

Cette fonction utilise des séquences pour produire un ensemble unique d’entiers croissants, mais ne produit pas nécessairement une séquence sans espace. Lorsque vous utilisez une grande quantité de données, des lacunes peuvent apparaître dans une séquence. Si une séquence entièrement ordonnée et sans espace est requise, envisagez d’utiliser la fonction de fenêtre ROW_NUMBER.

Pour plus de détails sur les séquences dans Snowflake, voir Utilisation de séquences.

Syntaxe

SEQ1( [0|1] )

SEQ2( [0|1] )

SEQ4( [0|1] )

SEQ8( [0|1] )

Notes sur l’utilisation

  • Si l’argument de signe facultatif est 0, la séquence continue à 0 après le bouclage. Si l’argument de signe facultatif est 1, la séquence continue au plus petit nombre représentable basé sur la largeur entière donnée.

  • L’argument de signe par défaut est 0.

Exemples

Ce sont des exemples de base d’utilisation de séquences :

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 |
+---------+---------+

Cet exemple montre comment utiliser ROW_NUMBER pour générer une séquence sans espaces :

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 |
+-------------------------------------+