Skip to content

TPC-DS Q15 — Catalog Sales Analysis

TPC-DS benchmark · all TPC-DS queries

Reports catalog sales for customers in specific zip codes

Representative SQL

Rendered for DataFusion with default parameters.

SELECT
ca_zip,
SUM(cs_sales_price)
FROM catalog_sales, customer, customer_address, date_dim
WHERE
cs_bill_customer_sk = c_customer_sk
AND c_current_addr_sk = ca_address_sk
AND (
SUBSTRING(ca_zip FROM 1 FOR 5) IN ('85669', '86197', '88274', '83405', '86475', '85392', '85460', '80348', '81792')
OR ca_state IN ('CA', 'WA', 'GA')
OR cs_sales_price > 500
)
AND cs_sold_date_sk = d_date_sk
AND d_qoy = 2
AND d_year = 2000
GROUP BY
ca_zip
ORDER BY
ca_zip
LIMIT 100

Representative DataFrame

Expression family (Polars, PySpark, DataFusion), default parameters.

def impl(ctx: DataFrameContext) -> Any:
return engine(ctx, spec)

Get the exact query for your run

The blocks above are representative. To get the precise statement a specific platform runs at a specific scale, substitute your own values:

from benchbox import TPCDS
bench = TPCDS(scale_factor=1.0) # your scale factor
queries = bench.get_queries(dialect="datafusion") # your platform's dialect; drop dialect= for native SQL
print(queries['15'])

Parameter substitution for this benchmark is seed-driven; pass a seed for a specific stream’s parameters:

print(bench.get_query(15, scale_factor=1.0, seed=42, dialect="datafusion"))

For the DataFrame form:

from benchbox.core.query_catalog import get_dataframe_render
print(get_dataframe_render('tpcds', '15', family="expression").source) # or family="pandas"

Source

Query text: _sources/tpc-ds/query_templates/query15.tpl