TPC-H Skew Q5 — Local Supplier Volume
TPC-H Skew benchmark · all TPC-H Skew queries
Revenue from orders in same nation within region
Representative SQL
Rendered for DataFusion with default parameters.
SELECT n_name, SUM(l_extendedprice * ( 1 - l_discount )) AS revenueFROM customer, orders, lineitem, supplier, nation, regionWHERE c_custkey = o_custkey AND l_orderkey = o_orderkey AND l_suppkey = s_suppkey AND c_nationkey = s_nationkey AND s_nationkey = n_nationkey AND n_regionkey = r_regionkey AND r_name = 'ASIA' AND o_orderdate >= CAST('1994-01-01' AS DATE) AND o_orderdate < CAST('1994-01-01' AS DATE) + INTERVAL '1 YEAR'GROUP BY n_nameORDER BY revenue DESCRepresentative DataFrame
Expression family (Polars, PySpark, DataFusion), default parameters.
def q5_expression_impl(ctx: DataFrameContext) -> Any: customer = ctx.get_table("customer") orders = ctx.get_table("orders") lineitem = ctx.get_table("lineitem") supplier = ctx.get_table("supplier") nation = ctx.get_table("nation") region = ctx.get_table("region") col = ctx.col lit = ctx.lit
params = get_tpch_parameters(5) region_name = params["region_name"] start_date = params["start_date"] end_date = params["end_date"]
return ( region.filter(col("r_name") == lit(region_name)) .join(nation, left_on="r_regionkey", right_on="n_regionkey") .join(customer, left_on="n_nationkey", right_on="c_nationkey") .join(orders, left_on="c_custkey", right_on="o_custkey") .filter((col("o_orderdate") >= lit(start_date)) & (col("o_orderdate") < lit(end_date))) .join(lineitem, left_on="o_orderkey", right_on="l_orderkey") .join( supplier, left_on=["l_suppkey", "n_nationkey"], right_on=["s_suppkey", "s_nationkey"], ) .group_by("n_name") .agg((col("l_extendedprice") * (lit(1) - col("l_discount"))).sum().alias("revenue")) .sort("revenue", descending=True) )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 TPCHSkew
bench = TPCHSkew(scale_factor=0.01) # your scale factorqueries = bench.get_queries(dialect="datafusion") # your platform's dialect; drop dialect= for native SQLprint(queries['5'])Parameter substitution for this benchmark is seed-driven; pass a seed for a specific stream’s parameters:
print(bench.get_query(5, scale_factor=0.01, seed=42, dialect="datafusion"))For the DataFrame form:
from benchbox.core.query_catalog import get_dataframe_render
print(get_dataframe_render('tpch_skew', '5', family="expression").source) # or family="pandas"Source
Query text: benchbox/_binaries/tpc-h/templates/queries/5.sql