Funções de geração de dados

As funções de geração de dados permitem que você gere dados. O Snowflake oferece suporte a dois tipos de funções de geração de dados:

  • Aleatória, que pode ser útil para fins de teste.

    Essas funções produzem um valor aleatório a cada vez. Cada valor é independente dos outros valores gerados por outras chamadas para a função. O algoritmo subjacente produz valores pseudoaleatórios, e assim os valores não são verdadeiramente aleatórios ou independentes, mas sem conhecer o algoritmo, os valores são essencialmente imprevisíveis, geralmente distribuídos uniformemente (se o tamanho da amostra for grande), e pseudoindependentes uns dos outros.

  • Distribuição controlada, que pode ser útil para fornecer números únicos de ID para registros que ainda não possuem identificadores únicos.

    Essas funções produzem valores que não são independentes. Por exemplo, a função NORMAL retorna valores que têm uma distribuição aproximadamente “normal” (em forma de sino) com base em uma média e desvio padrão especificados. Assim, cada novo valor gerado é influenciado, pelo menos indiretamente, por valores gerados anteriormente, à medida que a função tenta manter a distribuição especificada. Como outro exemplo, a família SEQ de funções retorna uma sequência de valores.

Nota

A função UNIFORM está listada como uma função de distribuição controlada, mas destina-se a gerar valores distribuídos de forma uniforme. Em outras palavras, ela age como se fosse uma função “aleatória”, mas nos referimos a ela como uma função de distribuição controlada porque a distribuição é explicitamente especificada e porque você pode escolher uma função de geração de dados que produz valores não uniformes para um tamanho grande de amostra.

Neste tópico:

Lista de funções

Nome da função

Notas

Aleatórias

Retorna um inteiro pseudoaleatório de 64 bits.

Retorna uma cadeia de caracteres aleatória de comprimento especificado.

Retorna um UUID aleatório compatível com RFC 4122 como uma cadeia de caracteres formatada.

Distribuição controlada

Retorna um número de ponto flutuante distribuído normalmente, com média e desvio padrão especificados.

Retorna um número uniformemente aleatório dentro do intervalo especificado.

Retorna um número inteiro distribuído por Zipf.

Retorna uma sequência de números inteiros monotônicos crescentes.

Notas de uso

  • As funções de distribuição aleatória são determinísticas.

  • Cada função de distribuição aleatória toma como último argumento uma expressão de gerador, gen. A expressão de gerador, gen, pode ser constante ou variável:

    • Se constante, o resultado da função de distribuição aleatória é constante (a menos que haja outros argumentos variáveis, que atualmente só são aceitos para a função RANDSTR).

    • Se variável, o resultado da função de distribuição aleatória é variável.

  • As expressões de gerador devem ser um inteiro de 64 bits, embora as conversões implícitas sejam permitidas. Qualquer expressão que possa ser convertida em um inteiro de 64 bits pode ser usada como uma expressão de gerador.

  • A aleatoriedade de qualquer função de distribuição aleatória está diretamente ligada à aleatoriedade de sua expressão de gerador. Para a maioria dos fins práticos, a função RANDOM de geração de dados é a melhor escolha para valores inteiros gerados aleatoriamente.

  • As sequências geradas pelas funções de geração de dados não têm garantia de serem ordenadas e sem lacunas. Isso porque os números podem ser gerados em paralelo, de forma não sincronizada.

    Para obter mais detalhes sobre as sequências no Snowflake, consulte Uso de sequências.