TPC-DS Q68 — Store Sales Customer Household
TPC-DS benchmark · all TPC-DS queries
Reports customer household purchases by city
Representative SQL
Rendered for DataFusion with default parameters.
SELECT c_last_name, c_first_name, ca_city, bought_city, ss_ticket_number, extended_price, extended_tax, list_priceFROM ( SELECT ss_ticket_number, ss_customer_sk, ca_city AS bought_city, SUM(ss_ext_sales_price) AS extended_price, SUM(ss_ext_list_price) AS list_price, SUM(ss_ext_tax) AS extended_tax FROM store_sales, date_dim, store, household_demographics, customer_address WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk AND store_sales.ss_store_sk = store.s_store_sk AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk AND store_sales.ss_addr_sk = customer_address.ca_address_sk AND date_dim.d_dom BETWEEN 1 AND 2 AND ( household_demographics.hd_dep_count = 5 OR household_demographics.hd_vehicle_count = 3 ) AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) AND store.s_city IN ('Midway', 'Fairview') GROUP BY ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city) AS dn, customer, customer_address AS current_addrWHERE ss_customer_sk = c_customer_sk AND customer.c_current_addr_sk = current_addr.ca_address_sk AND current_addr.ca_city <> bought_cityORDER BY c_last_name, ss_ticket_numberLIMIT 100Representative DataFrame
Expression family (Polars, PySpark, DataFusion), default parameters.
def q68_expression_impl(ctx: DataFrameContext) -> Any: inner = _ticket_household_inner_expression( ctx, 68, 1999, ["Midway", "Fairview"], 5, ( ("extended_price", "ss_ext_sales_price"), ("list_price", "ss_ext_list_price"), ("extended_tax", "ss_ext_tax"), ), dom_range=(1, 2), ) return _ticket_household_outer_expression( ctx, inner, [ "c_last_name", "c_first_name", "ca_city", "bought_city", "ss_ticket_number", "extended_price", "extended_tax", "list_price", ], ["c_last_name", "ss_ticket_number"], )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 factorqueries = bench.get_queries(dialect="datafusion") # your platform's dialect; drop dialect= for native SQLprint(queries['68'])Parameter substitution for this benchmark is seed-driven; pass a seed for a specific stream’s parameters:
print(bench.get_query(68, 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', '68', family="expression").source) # or family="pandas"Source
Query text: _sources/tpc-ds/query_templates/query68.tpl