메인 콘텐츠로 건너뛰기
Star Schema Benchmark (SSB)와 마찬가지로 TPC-DS는 TPC-H를 기반으로 하지만, 정반대의 접근을 취했습니다. 즉, 복잡한 스노우플레이크 스키마에 데이터를 저장해 필요한 조인 수를 늘렸습니다(테이블 8개가 아니라 24개). 데이터 분포는 치우쳐 있습니다(예: 정규분포 및 포아송 분포). 무작위 치환이 포함된 보고용 및 애드혹 쿼리 99개가 포함되어 있습니다. 참고

데이터 생성 및 가져오기

먼저 TPC-DS 리포지토리를 체크아웃한 다음 데이터 생성기를 컴파일합니다:
git clone https://github.com/gregrahn/tpcds-kit.git
cd tpcds-kit/tools
make
그런 다음 데이터를 생성합니다. -scale 매개변수는 스케일 팩터를 지정합니다.
./dsdgen -scale 1
이제 ClickHouse에서 테이블을 생성합니다. 테이블 정의는 ClickHouse 리포지토리의 init.sql에서 확인할 수 있습니다. 데이터는 다음과 같이 가져올 수 있습니다.
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
그런 다음 생성된 쿼리를 실행하세요.

쿼리

99개의 TPC-DS 쿼리는 ClickHouse 리포지토리의 여기에서 확인할 수 있습니다. SQL 표준과 호환되는 동작과 예상 결과를 얻으려면 settings.json의 설정을 적용하세요. 알려진 문제와 특정 쿼리에 대한 참고 사항은 README를 참조하세요. 정확성 별도 언급이 없는 한 쿼리 결과는 공식 결과와 일치합니다. TPC-DS 사양에서 허용하는 범위 내에서 미세한 정밀도 차이가 있을 수 있습니다.
마지막 수정일 2026년 6월 10일