Saltar al contenido principal
Al igual que Star Schema Benchmark (SSB), TPC-DS se basa en TPC-H, pero tomó el camino opuesto: amplió el número de JOIN necesarios almacenando los datos en un complejo esquema en copo de nieve (24 tablas en lugar de 8). La distribución de los datos es sesgada (p. ej., distribuciones normal y de Poisson). Incluye 99 consultas de informes y ad hoc con sustituciones aleatorias. Referencias

Generación e importación de datos

Primero, clona el repositorio de TPC-DS y compila el generador de datos:
git clone https://github.com/gregrahn/tpcds-kit.git
cd tpcds-kit/tools
make
A continuación, genere los datos. El parámetro -scale especifica el factor de escala.
./dsdgen -scale 1
Ahora, cree las tablas en ClickHouse. Las definiciones de las tablas están disponibles en init.sql en el repositorio de ClickHouse. Los datos pueden importarse de la siguiente manera:
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
A continuación, ejecuta las consultas generadas.

Consultas

Las 99 consultas TPC-DS se pueden encontrar aquí, en el repositorio de ClickHouse. Para obtener un comportamiento compatible con el estándar SQL y los resultados esperados, aplica la configuración de settings.json. Consulta el README para ver los problemas conocidos y las notas sobre consultas específicas. Corrección Los resultados de las consultas coinciden con los resultados oficiales, salvo que se indique lo contrario. Puede haber pequeñas diferencias de precisión, permitidas por la especificación TPC-DS.
Última modificación el 10 de junio de 2026