TPC-DS-OBT Q17 — obt_overall_totals
TPC-DS-OBT benchmark · all TPC-DS-OBT queries
Overall sales, revenue, and profit totals
Representative SQL
Rendered for DataFusion with default parameters.
SELECT item_i_item_id, item_i_item_desc, store_s_state, COUNT(quantity) AS store_sales_quantitycount, AVG(quantity) AS store_sales_quantityave, STDDEV_SAMP(quantity) AS store_sales_quantitystdev, CAST(STDDEV_SAMP(quantity) AS DOUBLE PRECISION) / AVG(quantity) AS store_sales_quantitycov, COUNT(return_quantity) AS store_returns_quantitycount, AVG(return_quantity) AS store_returns_quantityave, STDDEV_SAMP(return_quantity) AS store_returns_quantitystdev, CAST(STDDEV_SAMP(return_quantity) AS DOUBLE PRECISION) / AVG(return_quantity) AS store_returns_quantitycov, COUNT(quantity) AS catalog_sales_quantitycount, AVG(quantity) AS catalog_sales_quantityave, STDDEV_SAMP(quantity) AS catalog_sales_quantitystdev, CAST(STDDEV_SAMP(quantity) AS DOUBLE PRECISION) / AVG(quantity) AS catalog_sales_quantitycovFROM tpcds_sales_returns_obt AS obtWHERE ( sold_date_d_quarter_name = '1998Q1' AND sold_date_d_date_sk = sold_date_sk AND item_i_item_sk = item_sk AND store_s_store_sk = store_sk AND ship_customer_sk = returning_customer_c_customer_sk AND item_sk = item_sk AND sale_id = sale_id AND returned_date_sk = return_date_d_date_sk AND return_date_d_quarter_name IN ('1998Q1', '1998Q2', '1998Q3') AND returning_customer_c_customer_sk = bill_customer_sk AND item_sk = item_sk AND sold_date_sk = sold_date_d_date_sk AND sold_date_d_quarter_name IN ('1998Q1', '1998Q2', '1998Q3') ) AND channel IN ('catalog', 'store')GROUP BY item_i_item_id, item_i_item_desc, store_s_stateORDER BY item_i_item_id, item_i_item_desc, store_s_stateLIMIT 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['17'])For the DataFrame form:
from benchbox.core.query_catalog import get_dataframe_render
print(get_dataframe_render('tpcds_obt', '17', family="expression").source) # or family="pandas"Source
Query text: benchbox/core/tpcds_obt/queries.py