メインコンテンツまでスキップ
メインコンテンツまでスキップ

TPC-H (1999)

流通業者の内部データウェアハウスをモデル化した人気のあるベンチマークです。 データは3rd正規形の表現で保存されており、クエリ実行時に多くの結合を必要とします。 その古さと、データが均一かつ独立して分布しているという現実的ではない仮定にも関わらず、TPC-Hは今日まで最も人気のあるOLAPベンチマークです。

参考文献

データ生成とインポート

まず、TPC-Hリポジトリをチェックアウトして、データジェネレーターをコンパイルします:

次に、データを生成します。パラメータ-sはスケールファクターを指定します。例えば、-s 100では、600百万行が'table' 'lineitem'のために生成されます。

スケールファクター100の詳細なテーブルサイズ:

テーブル行数ClickHouse内圧縮サイズ
nation252 kB
region51 kB
part20.000.000895 MB
supplier1.000.00075 MB
partsupp80.000.0004.37 GB
customer15.000.0001.19 GB
orders150.000.0006.15 GB
lineitem600.00.0026.69 GB

(ClickHouseでの圧縮サイズはsystem.tables.total_bytesから取得され、以下のテーブル定義に基づいています。)

次に、ClickHouseにテーブルを作成します。

TPC-H仕様のルールにできるだけ厳密に従います:

  • 主キーは、仕様のセクション1.4.2.2に記載されたカラムのみに対して作成されます。
  • 代入パラメータは、仕様のセクション2.1.x.4でのクエリ検証用に値で置き換えられます。
  • セクション1.4.2.1によれば、テーブル定義はオプションのNOT NULL制約を使用せず、dbgenがデフォルトで生成しても使用しません。 ClickHouseでのSELECTクエリの性能は、NOT NULL制約の存在によって影響を受けません。
  • セクション1.3.1に従い、ClickHouseのネイティブデータ型(例: Int32, String)を使用して、仕様で言及された抽象データ型(例: Identifier, Variable text, size N)を実装します。この結果は主に読みやすさの向上のみであり、dbgenによって生成されるSQL-92データ型(例: INTEGER, VARCHAR(40))もClickHouseで機能します。

データは次のようにインポートできます:

注記

tpch-kitを使用して自分でテーブルを生成する代わりに、公開されたS3バケットからデータをインポートすることもできます。 最初に上記のCREATE文を使用して空のテーブルを作成してください。

クエリ

注記

join_use_nullsを設定を有効にして、SQL標準に従った正しい結果を生成する必要があります。

クエリは./qgen -s <スケーリングファクター>によって生成されます。スケール = 100のクエリの例:

正確性

クエリの結果は、特に別途言及されていない限り、公式の結果と一致します。確認するには、スケールファクター=1 (dbgen、上記参照)でTPC-Hデータベースを生成し、tpch-kitの期待される結果と比較してください。

Q1

Q2

注記

2025年2月現在、相関サブクエリのため、クエリはそのままでは動作しません。対応する問題: https://github.com/ClickHouse/ClickHouse/issues/6697

この代替の定式化は機能し、参照結果を返すことが確認されています。

Q3

Q4

注記

2025年2月現在、相関サブクエリのため、クエリはそのままでは動作しません。対応する問題: https://github.com/ClickHouse/ClickHouse/issues/6697

この代替の定式化は機能し、参照結果を返すことが確認されています。

Q5

Q6

注記

2025年2月現在、Decimal加算のバグにより、クエリはそのままでは動作しません。対応する問題: https://github.com/ClickHouse/ClickHouse/issues/70136

この代替の定式化は機能し、参照結果を返すことが確認されています。

Q7

Q8

Q9

Q10

Q11

Q12

Q13

Q14

Q15

Q16

Q17

注記

2025年2月現在、相関サブクエリのため、クエリはそのままでは動作しません。対応する問題: https://github.com/ClickHouse/ClickHouse/issues/6697

この代替の定式化は機能し、参照結果を返すことが確認されています。

Q18

Q19

Q20

注記

2025年2月現在、相関サブクエリのため、クエリはそのままでは動作しません。対応する問題: https://github.com/ClickHouse/ClickHouse/issues/6697

Q21

注記

2025年2月現在、相関サブクエリのため、クエリはそのままでは動作しません。対応する問題: https://github.com/ClickHouse/ClickHouse/issues/6697

Q22

注記

2025年2月現在、相関サブクエリのため、クエリはそのままでは動作しません。対応する問題: https://github.com/ClickHouse/ClickHouse/issues/6697