Passer au contenu principal
À l’instar du Star Schema Benchmark (SSB), TPC-DS repose sur TPC-H, mais suit l’approche inverse : il augmente le nombre de jointures nécessaires en stockant les données dans un schéma en flocon complexe (24 tables au lieu de 8). La distribution des données est déséquilibrée (par ex. distributions normale et de Poisson). Il comprend 99 requêtes de reporting et ad hoc avec des substitutions aléatoires. Références

Génération et importation des données

Commencez par cloner le dépôt TPC-DS, puis compilez le générateur de données :
git clone https://github.com/gregrahn/tpcds-kit.git
cd tpcds-kit/tools
make
Ensuite, générez les données. Le paramètre -scale définit le facteur d’échelle.
./dsdgen -scale 1
Créez maintenant des tables dans ClickHouse. Les définitions des tables sont disponibles dans init.sql dans le dépôt ClickHouse. Les données peuvent être importées comme suit :
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO call_center FORMAT CSV" < call_center.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO catalog_page FORMAT CSV" < catalog_page.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO catalog_returns FORMAT CSV" < catalog_returns.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO catalog_sales FORMAT CSV" < catalog_sales.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer FORMAT CSV" < customer.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer_address FORMAT CSV" < customer_address.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer_demographics FORMAT CSV" < customer_demographics.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO date_dim FORMAT CSV" < date_dim.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO household_demographics FORMAT CSV" < household_demographics.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO income_band FORMAT CSV" < income_band.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO inventory FORMAT CSV" < inventory.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO item FORMAT CSV" < item.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO promotion FORMAT CSV" < promotion.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO reason FORMAT CSV" < reason.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO ship_mode FORMAT CSV" < ship_mode.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO store FORMAT CSV" < store.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO store_returns FORMAT CSV" < store_returns.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO store_sales FORMAT CSV" < store_sales.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO time_dim FORMAT CSV" < time_dim.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO warehouse FORMAT CSV" < warehouse.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO web_page FORMAT CSV" < web_page.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO web_returns FORMAT CSV" < web_returns.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO web_sales FORMAT CSV" < web_sales.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO web_site FORMAT CSV" < web_site.dat
Ensuite, exécutez les requêtes générées.

Requêtes

Les 99 requêtes TPC-DS sont disponibles ici, dans le dépôt de ClickHouse. Pour obtenir un comportement compatible avec la norme SQL et les résultats attendus, appliquez les paramètres définis dans settings.json. Consultez le README pour connaître les problèmes connus et les remarques concernant certaines requêtes. Conformité Les résultats des requêtes correspondent aux résultats officiels, sauf mention contraire. De légères différences de précision peuvent exister ; elles sont autorisées par la spécification TPC-DS.
Dernière modification le 29 juin 2026