TPC-DS
TPC-DS (Transaction Processing Performance Council — Decision Support) — это бенчмарк для оценки производительности систем поддержки принятия решений и аналитических баз данных. Он моделирует реальные сценарии работы с большими объемами данных, типичные для дата-центров розничных организаций и других крупных компаний.
Параметры теста
Бенчмарк |
TPC-DS |
Тип теста |
статический тест (без ETL) |
Scaling factor |
|
Запрос |
случайный |
Параметры |
случайные |
Количество потоков |
|
Время |
1 час |
Примеры тестовых запросов
Посмотреть примеры тестовых SQL-запросов
-- start Q1
WITH customer_total_return
AS (SELECT sr_customer_sk AS ctr_customer_sk,
sr_store_sk AS ctr_store_sk,
Sum(sr_return_amt) AS ctr_total_return
FROM s1_store_returns,
s1_date_dim
WHERE sr_returned_date_sk = d_date_sk
AND d_year = 2001
GROUP BY sr_customer_sk,
sr_store_sk)
SELECT c_customer_id
FROM customer_total_return ctr1,
s1_store,
s1_customer
WHERE ctr1.ctr_total_return > (SELECT Avg(ctr_total_return) * 1.2
FROM customer_total_return ctr2
WHERE ctr1.ctr_store_sk = ctr2.ctr_store_sk)
AND s_store_sk = ctr1.ctr_store_sk
AND s_state = 'TN'
AND ctr1.ctr_customer_sk = c_customer_sk
ORDER BY c_customer_id
LIMIT 100;
-- start Q2
WITH wscs
AS (SELECT sold_date_sk,
sales_price
FROM (SELECT ws_sold_date_sk sold_date_sk,
ws_ext_sales_price sales_price
FROM s1_web_sales)
UNION ALL
(SELECT cs_sold_date_sk sold_date_sk,
cs_ext_sales_price sales_price
FROM s1_catalog_sales)),
wswscs
AS (SELECT d_week_seq,
Sum(CASE
WHEN ( d_day_name = 'Sunday' ) THEN sales_price
ELSE NULL
END) sun_sales,
Sum(CASE
WHEN ( d_day_name = 'Monday' ) THEN sales_price
ELSE NULL
END) mon_sales,
Sum(CASE
WHEN ( d_day_name = 'Tuesday' ) THEN sales_price
ELSE NULL
END) tue_sales,
Sum(CASE
WHEN ( d_day_name = 'Wednesday' ) THEN sales_price
ELSE NULL
END) wed_sales,
Sum(CASE
WHEN ( d_day_name = 'Thursday' ) THEN sales_price
ELSE NULL
END) thu_sales,
Sum(CASE
WHEN ( d_day_name = 'Friday' ) THEN sales_price
ELSE NULL
END) fri_sales,
Sum(CASE
WHEN ( d_day_name = 'Saturday' ) THEN sales_price
ELSE NULL
END) sat_sales
FROM wscs,
s1_date_dim
WHERE d_date_sk = sold_date_sk
GROUP BY d_week_seq)
SELECT d_week_seq1,
Round(sun_sales1 / sun_sales2, 2),
Round(mon_sales1 / mon_sales2, 2),
Round(tue_sales1 / tue_sales2, 2),
Round(wed_sales1 / wed_sales2, 2),
Round(thu_sales1 / thu_sales2, 2),
Round(fri_sales1 / fri_sales2, 2),
Round(sat_sales1 / sat_sales2, 2)
FROM (SELECT wswscs.d_week_seq d_week_seq1,
sun_sales sun_sales1,
mon_sales mon_sales1,
tue_sales tue_sales1,
wed_sales wed_sales1,
thu_sales thu_sales1,
fri_sales fri_sales1,
sat_sales sat_sales1
FROM wswscs,
s1_date_dim
WHERE s1_date_dim.d_week_seq = wswscs.d_week_seq
AND d_year = 1998) y,
(SELECT wswscs.d_week_seq d_week_seq2,
sun_sales sun_sales2,
mon_sales mon_sales2,
tue_sales tue_sales2,
wed_sales wed_sales2,
thu_sales thu_sales2,
fri_sales fri_sales2,
sat_sales sat_sales2
FROM wswscs,
s1_date_dim
WHERE s1_date_dim.d_week_seq = wswscs.d_week_seq
AND d_year = 1998 + 1) z
WHERE d_week_seq1 = d_week_seq2 - 53
ORDER BY d_week_seq1;