メインコンテンツへスキップ
新しいユースケースの検証や実装のベンチマークでは、ランダムデータの生成が役立ちます。 ClickHouse には、ランダムデータを生成するための幅広い関数 が用意されており、多くの場合、外部のデータ生成ツールは不要です。 このガイドでは、求めるランダム性が異なるさまざまなケースに応じて、ClickHouse でランダムなデータセットを生成する方法をいくつかの例で紹介します。

シンプルな一様分布のデータセット

用途: ランダムなタイムスタンプとイベントタイプを持つユーザーイベントのデータセットを手早く生成します。
  • rand() % 10000: 1万人のユーザーに対する一様分布
  • arrayElement(...): 3種類のイベントタイプのうち1つをランダムに選択
  • タイムスタンプは過去24時間にわたって分散

指数分布

ユースケース: 多くは少額で、ごく一部だけが高額になる購入金額をシミュレートします。
  • 直近の期間全体に均等に分布したタイムスタンプ
  • randExponential(1/10) — 値の大半は 0 付近で、最小値が 15 になるようにオフセット ([ClickHouse][1], [ClickHouse][2], [Atlantic.Net][3], [GitHub][4])

時間帯に偏りのあるイベント (ポアソン)

ユースケース: 特定の時間帯 (例: ピーク時間帯) に集中して発生するイベントの到着をシミュレートします。
  • イベントは正午ごろにピークを迎え、ばらつきはポアソン分布に従います

時間とともに変化する正規分布

ユースケース: 時間とともに変化するシステムメトリクス (例: CPU 使用率) を再現します。
  • usage は日周の正弦波+ランダムな変動に従います
  • 値は [0,100] の範囲に収まります

カテゴリカルデータとネストデータ

ユースケース: 複数の興味・関心を持てるユーザープロファイルを作成します。
  • 配列の長さは1〜3のランダムな値
  • 各関心項目に対して、ユーザーごとのスコアを3つ
さらに多くの例については、ClickHouse でランダムデータを生成するブログをお読みください。

ランダムなテーブルの生成

generateRandomStructure 関数は、generateRandom テーブルエンジンと組み合わせることで、テストやベンチマーク、あるいは任意のスキーマを持つモックデータの作成に特に役立ちます。 まずは、generateRandomStructure 関数を使って、ランダムな構造がどのようなものかを見てみましょう。
次のように表示されることがあります:
シードを使うことで、毎回同じ構造を得ることもできます:
では、実際にテーブルを作成し、ランダムなデータを投入してみましょう。
両方の関数を組み合わせて、完全にランダムなテーブルを作りましょう。 まず、どのような構造になるかを見てみましょう。
次に、その構造でテーブルを作成し、DESCRIBEステートメントを使って作成結果を確認します。
生成されたデータのサンプルとして、最初の行を確認します。
最終更新日 2026年7月1日