데이터 생성 함수

데이터 생성 함수 (Data generation functions)

이 문서는 데이터를 생성할 수 있게 해주는 데이터 생성 함수들을 설명해요. 테스트 목적에 유용한 무작위(random) 생성 함수와, 고유 ID를 제공하는 데 유용한 제어 분포(controlled distribution) 생성 함수가 있어요.

출처: Snowflake SQL Reference

본문

데이터 생성 함수를 사용하면 데이터를 생성할 수 있어요. Snowflake는 두 가지 유형의 데이터 생성 함수를 지원합니다:

  • 무작위 (Random): 테스트 목적에 유용할 수 있어요. 이 함수들은 호출할 때마다 무작위 값을 생성해요. 각 값은 함수에 대한 다른 호출로 생성된 다른 값과 독립적이에요. 기본 알고리즘은 의사 무작위(pseudo-random) 값을 생성하므로 값은 진정한 무작위도 독립적이지도 않지만, 알고리즘을 모르면 값은 본질적으로 예측 불가능하고, 보통 균등하게 분포하며(표본 크기가 크다면), 서로 의사 독립적(pseudo-independent)이에요.
  • 제어 분포 (Controlled distribution): 고유 식별자가 없는 레코드에 고유 ID 번호를 제공하는 데 유용할 수 있어요. 이 함수들은 독립적이지 않은 값을 생성해요. 예를 들어 NORMAL 함수는 지정된 평균과 표준편차에 기반해 대략 "정규"(종 모양) 분포를 가진 값을 반환해요. 따라서 함수가 지정된 분포를 유지하려 하면서 각각의 새로 생성된 값은 이전에 생성된 값에 적어도 간접적으로 영향을 받아요. 또 다른 예로 SEQ 함수 계열은 일련의 값들을 반환해요.

참고

UNIFORM 함수는 제어 분포 함수로 나열되어 있지만 균등 분포된 값을 생성하기 위한 것이에요. 다시 말해 "무작위" 함수처럼 동작하지만, 분포가 명시적으로 지정되고 큰 표본 크기에서 비균등 값들(비균일 분포)을 생성하는 데이터 생성 함수를 선택할 수 있기 때문에 우리는 이를 제어 분포 함수라고 부릅니다.

함수 목록 (List of functions)

함수 이름 (Function Name) 참고 (Notes)
무작위 (Random)
RANDOM 의사 무작위 64비트 정수를 반환
RANDSTR 지정된 길이의 무작위 문자열을 반환
UUID_STRING RFC 4122를 준수하는 무작위 UUID를 형식화된 문자열로 반환
제어 분포 (Controlled Distribution)
NORMAL 지정된 평균과 표준편차로 정규 분포된 부동 소수점 숫자를 반환
UNIFORM 지정된 범위 내의 균등 무작위 숫자를 반환
ZIPF Zipf 분포된 정수를 반환
SEQ1 / SEQ2 / SEQ4 / SEQ8 단조 증가하는 정수 시퀀스를 반환

사용 참고 사항 (Usage notes)

  • 무작위 분포 함수는 결정적(deterministic)이에요.
  • 각 무작위 분포 함수는 마지막 인자로 생성기 표현식(generator expression)인 gen을 받아요. gen은 상수 또는 변수일 수 있어요:
    • 상수라면 무작위 분포 함수의 결과는 상수예요(다른 가변 인자가 없는 한. 현재는 RANDSTR 함수에만 가변 인자가 지원됨).
    • 변수라면 무작위 분포 함수의 결과는 변수예요.
  • 생성기 표현식은 64비트 정수 타입이어야 하며, 암시적 변환은 허용돼요. 64비트 정수로 변환할 수 있는 모든 표현식을 생성기 표현식으로 사용할 수 있어요.
  • 모든 무작위 분포 함수의 무작위성은 생성기 표현식의 무작위성에 직접 연결돼요. 대부분의 실용적인 목적에서 RANDOM 데이터 생성 함수가 무작위 정수 값을 생성하는 최선의 선택이에요.
  • 데이터 생성 함수가 생성한 시퀀스는 정렬되고 빈틈이 없다고 보장되지 않아요. 숫자가 동기화되지 않은 방식으로 병렬로 생성될 수 있기 때문입니다. Snowflake의 시퀀스에 대한 자세한 내용은 시퀀스 사용하기(Using Sequences) 문서를 참고하세요.
  • 소수 부동 소수점(DECFLOAT) 값은 데이터 생성 함수의 인자로 사용할 수 없어요.

더 알아보기 (Learn more)

  • 스칼라 함수 (functions)
  • 날짜 및 시간 함수 (functions-date-time)
  • 숫자 함수 (Numeric functions)
  • 집계 함수 (functions-aggregation)