메인 콘텐츠로 건너뛰기
새로운 사용 사례를 테스트하거나 구현 성능을 벤치마크할 때 무작위 데이터 생성은 유용합니다. ClickHouse에는 무작위 데이터를 생성하는 다양한 함수가 있어, 많은 경우 외부 데이터 생성기가 필요하지 않습니다. 이 가이드에서는 무작위성 요구 사항에 따라 ClickHouse에서 다양한 데이터셋을 생성하는 여러 예시를 제공합니다.

간단한 균등 분포 데이터셋

사용 사례: 무작위 타임스탬프와 이벤트 유형이 포함된 사용자 이벤트 데이터셋을 빠르게 생성합니다.
  • rand() % 10000: 1만 명 사용자에 대한 균등 분포
  • arrayElement(...): 3가지 이벤트 유형 중 하나를 무작위로 선택합니다
  • 타임스탬프는 직전 24시간에 걸쳐 분포합니다

지수 분포

사용 사례: 대부분은 낮고 일부만 높은 구매 금액을 시뮬레이션합니다.
  • 최근 기간 전반에 걸쳐 균등한 타임스탬프
  • randExponential(1/10) — 대부분의 값은 0에 가깝고, 최소값으로 15를 더해 보정합니다([ClickHouse][1], [ClickHouse][2], [Atlantic.Net][3], [GitHub][4])

시간대별 이벤트 분포 (Poisson)

사용 사례: 특정 시간대(예: 피크 시간대)에 이벤트가 몰려 도착하는 상황을 시뮬레이션합니다.
  • 이벤트는 정오 무렵에 가장 많이 발생하며, 편차는 포아송 분포를 따릅니다

시간에 따라 변화하는 정규 분포

사용 사례: 시간에 따라 변화하는 시스템 메트릭(예: CPU 사용률)을 시뮬레이션합니다.
  • usage는 일주기성 사인파 + 무작위성을 따릅니다
  • 값은 [0,100] 범위로 제한됩니다

범주형 및 중첩 데이터

사용 사례: 여러 값을 가질 수 있는 관심사를 포함한 사용자 프로필을 생성합니다.
  • 배열 길이는 1–3 사이에서 무작위로 지정
  • 각 관심사마다 사용자별 점수 3개
더 많은 예시는 Generating Random Data in ClickHouse 블로그에서 확인하십시오.

무작위 테이블 생성

generateRandomStructure 함수는 테스트, 벤치마크, 또는 임의의 스키마(schema)를 가진 모의 데이터를 생성할 때 generateRandom 테이블 엔진과 함께 사용하면 특히 유용합니다. 먼저 generateRandomStructure 함수를 사용해 무작위 구조가 어떤 모습인지 살펴보겠습니다:
다음과 같이 표시될 수 있습니다:
시드를 사용하면 매번 같은 구조를 생성할 수도 있습니다:
이제 실제 테이블을 만들고 무작위 데이터를 채워 넣어 보겠습니다:
이제 두 함수를 조합해 완전히 무작위인 테이블을 만들어 보겠습니다. 먼저 어떤 구조를 얻게 되는지 살펴보겠습니다:
이제 해당 구조로 테이블을 생성하고, DESCRIBE 문을 사용해 생성된 결과를 확인하세요:
생성된 데이터의 샘플을 확인하려면 첫 번째 행을 살펴보세요:
마지막 수정일 2026년 7월 1일