Fonctions de génération de données

Les fonctions de génération de données vous permettent de générer des données. Snowflake prend en charge deux types de fonctions de génération de données :

  • Aléatoire, ce qui peut être utile à des fins de test.

    Ces fonctions produisent une valeur aléatoire à chaque fois. Chaque valeur est indépendante des autres valeurs générées par d’autres appels à la fonction. L’algorithme sous-jacent génère des valeurs pseudo-aléatoires. Les valeurs ne sont donc pas véritablement aléatoires ni indépendantes, mais sans connaître l’algorithme, elles sont essentiellement imprévisibles, généralement bien réparties (si la taille de l’échantillon est grande) et pseudo-indépendantes les unes des autres.

  • Distribution contrôlée, ce qui peut être utile pour fournir des numéros d’ID uniques aux enregistrements qui ne possèdent pas déjà d’identificateur unique.

    Ces fonctions produisent des valeurs qui ne sont pas indépendantes. Par exemple, la fonction NORMAL renvoie des valeurs ayant une distribution approximativement « normale » (en forme de cloche) basée sur une moyenne et un écart type spécifiés. Ainsi, chaque nouvelle valeur générée est au moins indirectement influencée par les valeurs générées précédemment lorsque la fonction tente de maintenir la distribution spécifiée. Autre exemple, la famille de fonctions SEQ renvoie une séquence de valeurs.

Note

La fonction UNIFORM est répertoriée en tant que fonction à distribution contrôlée, mais elle est conçue pour générer des valeurs uniformément réparties. En d’autres termes, il s’agit d’une fonction « aléatoire », mais nous l’appelons fonction de distribution contrôlée, car la distribution est explicitement spécifiée et parce que vous pouvez choisir une fonction de génération de données produisant des valeurs non uniformes sur une grande taille de l’échantillon.

Dans ce chapitre :

Liste des fonctions

Nom de la fonction

Remarques

Aléatoire

Renvoie un entier de 64 bits pseudo-aléatoire.

Renvoie une chaîne aléatoire de caractères de la longueur spécifiée.

Renvoie un UUID aléatoire conforme RFC 4122 sous forme de chaîne formatée.

Distribution contrôlée

Renvoie un nombre à virgule flottante réparti normalement, avec un écart type spécifié mean et standard.

Renvoie un nombre uniformément aléatoire dans la plage spécifiée.

Renvoie un entier distribué par Zipf.

Renvoie une séquence d’entiers monotones croissants.

Notes sur l’utilisation

  • Les fonctions de distribution aléatoire sont déterministes.

  • Chaque fonction de distribution aléatoire prend une expression de générateur, gen, comme dernier argument. L’expression du générateur, gen, peut être constante ou variable :

    • Si elle est constante, alors le résultat de la fonction de distribution aléatoire est constant (à moins qu’il y ait d’autres arguments variables, ce qui n’est actuellement pris en charge que pour la fonction RANDSTR).

    • Si elle est variable, alors le résultat de la fonction de distribution aléatoire est variable.

  • Les expressions du générateur doivent être un entier de type 64 bits, bien que des conversions implicites soient également autorisées. Toute expression qui peut être convertie en un entier de 64 bits peut être utilisée comme expression de générateur.

  • Le caractère aléatoire de toute fonction de distribution aléatoire est directement lié au caractère aléatoire de l’expression de son générateur. Pour des raisons pratiques, la fonction de génération de données RANDOM est le meilleur choix pour des valeurs d’entiers générées de façon aléatoire.

  • Il n’est pas garanti que les séquences générées par les fonctions de génération de données soient ordonnées et sans écarts. En effet, les nombres peuvent être générés en parallèle, de façon non synchronisée.

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