TPC-DS-OBT Q10 — obt_high_value_sales
TPC-DS-OBT benchmark · all TPC-DS-OBT queries
Count and revenue of high-value sales
Representative SQL
Rendered for DataFusion with default parameters.
SELECT bill_cdemo_cd_gender, bill_cdemo_cd_marital_status, bill_cdemo_cd_education_status, COUNT(*) AS cnt1, bill_cdemo_cd_purchase_estimate, COUNT(*) AS cnt2, bill_cdemo_cd_credit_rating, COUNT(*) AS cnt3, bill_cdemo_cd_dep_count, COUNT(*) AS cnt4, bill_cdemo_cd_dep_employed_count, COUNT(*) AS cnt5, bill_cdemo_cd_dep_college_count, COUNT(*) AS cnt6FROM tpcds_sales_returns_obt AS obtWHERE ( ship_customer_c_current_addr_sk = bill_addr_ca_address_sk AND bill_addr_ca_county IN ('2', '2', '2', '2', '2') AND bill_cdemo_cd_demo_sk = ship_customer_c_current_cdemo_sk AND EXISTS( SELECT * FROM tpcds_sales_returns_obt AS obt WHERE ( obt.ship_customer_c_customer_sk = obt.ship_customer_sk AND obt.sold_date_sk = obt.sold_date_d_date_sk AND obt.sold_date_d_year = 1999 AND obt.sold_date_d_moy BETWEEN 1 AND 1 + 3 ) AND channel = 'store' ) AND ( EXISTS( SELECT * FROM tpcds_sales_returns_obt AS obt WHERE ( obt.ship_customer_c_customer_sk = obt.bill_customer_sk AND obt.sold_date_sk = obt.sold_date_d_date_sk AND obt.sold_date_d_year = 1999 AND obt.sold_date_d_moy BETWEEN 1 AND 1 + 3 ) AND channel = 'web' ) OR EXISTS( SELECT * FROM tpcds_sales_returns_obt AS obt WHERE ( obt.ship_customer_c_customer_sk = obt.ship_customer_sk AND obt.sold_date_sk = obt.sold_date_d_date_sk AND obt.sold_date_d_year = 1999 AND obt.sold_date_d_moy BETWEEN 1 AND 1 + 3 ) AND channel = 'catalog' ) ) ) AND channel IN ('catalog', 'store', 'web')GROUP BY bill_cdemo_cd_gender, bill_cdemo_cd_marital_status, bill_cdemo_cd_education_status, bill_cdemo_cd_purchase_estimate, bill_cdemo_cd_credit_rating, bill_cdemo_cd_dep_count, bill_cdemo_cd_dep_employed_count, bill_cdemo_cd_dep_college_countORDER BY bill_cdemo_cd_gender, bill_cdemo_cd_marital_status, bill_cdemo_cd_education_status, bill_cdemo_cd_purchase_estimate, bill_cdemo_cd_credit_rating, bill_cdemo_cd_dep_count, bill_cdemo_cd_dep_employed_count, bill_cdemo_cd_dep_college_countLIMIT 100Representative DataFrame
Expression family (Polars, PySpark, DataFusion), default parameters.
def impl(ctx: DataFrameContext) -> Any: table = ctx.get_table(OBT_TABLE) for column, op, value in spec.filters: table = table.filter(_FILTER_OPS[op](ctx.col(column), ctx.lit(value))) aggregates = [getattr(ctx.col(column), func)().alias(alias) for alias, column, func in spec.aggregations] if spec.group_keys: result = table.group_by(*spec.group_keys).agg(*aggregates) else: result = table.select(*aggregates) if spec.sort_keys: descending = list(spec.descending) if spec.descending else [False] * len(spec.sort_keys) result = result.sort(list(spec.sort_keys), descending=descending) if spec.limit: result = result.limit(spec.limit) return resultGet 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 TPCDSOBT
bench = TPCDSOBT(scale_factor=1.0) # your scale factorqueries = bench.get_queries(dialect="datafusion") # your platform's dialect; drop dialect= for native SQLprint(queries['10'])For the DataFrame form:
from benchbox.core.query_catalog import get_dataframe_render
print(get_dataframe_render('tpcds_obt', '10', family="expression").source) # or family="pandas"Source
Query text: benchbox/core/tpcds_obt/queries.py