TPC-H Data Vault Q7 — Volume Shipping
TPC-H Data Vault benchmark · all TPC-H Data Vault queries
Value of goods shipped between nations (Data Vault)
Representative SQL
Rendered in the benchmark’s native SQL with default parameters (no dialect translation available).
SELECT supp_nation, cust_nation, l_year, SUM(volume) AS revenueFROM ( SELECT n1.n_name AS supp_nation, n2.n_name AS cust_nation, EXTRACT(YEAR FROM sl.l_shipdate) AS l_year, sl.l_extendedprice * ( 1 - sl.l_discount ) AS volume FROM link_lineitem AS ll JOIN sat_lineitem AS sl ON ll.hk_lineitem_link = sl.hk_lineitem_link AND sl.load_end_dts IS NULL JOIN hub_supplier AS hs ON ll.hk_supplier = hs.hk_supplier JOIN link_supplier_nation AS lsn ON hs.hk_supplier = lsn.hk_supplier JOIN hub_nation AS hn1 ON lsn.hk_nation = hn1.hk_nation JOIN sat_nation AS n1 ON hn1.hk_nation = n1.hk_nation AND n1.load_end_dts IS NULL JOIN hub_order AS ho ON ll.hk_order = ho.hk_order JOIN link_order_customer AS loc ON ho.hk_order = loc.hk_order JOIN hub_customer AS hc ON loc.hk_customer = hc.hk_customer JOIN link_customer_nation AS lcn ON hc.hk_customer = lcn.hk_customer JOIN hub_nation AS hn2 ON lcn.hk_nation = hn2.hk_nation JOIN sat_nation AS n2 ON hn2.hk_nation = n2.hk_nation AND n2.load_end_dts IS NULL WHERE ( ( n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY' ) OR ( n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE' ) ) AND sl.l_shipdate BETWEEN CAST('1995-01-01' AS DATE) AND CAST('1996-12-31' AS DATE)) AS shippingGROUP BY supp_nation, cust_nation, l_yearORDER BY supp_nation, cust_nation, l_yearRepresentative DataFrame
Expression family (Polars, PySpark, DataFusion), default parameters.
def q7_expression_impl(ctx: DataFrameContext) -> Any:
params = get_parameters("Q7") col, lit = ctx.col, ctx.lit nation1 = params.get("nation1", "FRANCE") nation2 = params.get("nation2", "GERMANY")
ll = _strip_audit_columns(ctx.get_table("link_lineitem")) sl = _strip_audit_columns(ctx.get_table("sat_lineitem").filter(col("load_end_dts").is_null())) lsn = _strip_audit_columns(ctx.get_table("link_supplier_nation")) sn = _strip_audit_columns(ctx.get_table("sat_nation").filter(col("load_end_dts").is_null())) loc = _strip_audit_columns(ctx.get_table("link_order_customer")) lcn = _strip_audit_columns(ctx.get_table("link_customer_nation"))
lineitem = ll.join(sl, left_on="hk_lineitem_link", right_on="hk_lineitem_link").filter( (col("l_shipdate") >= lit(date(1995, 1, 1))) & (col("l_shipdate") <= lit(date(1996, 12, 31))) )
supp_nation = lsn.join(sn, left_on="hk_nation", right_on="hk_nation").rename( {"n_name": "supp_nation", "hk_nation": "hk_supp_nation"} )
cust_nation_base = loc.join(lcn, left_on="hk_customer", right_on="hk_customer") cust_nation = cust_nation_base.join(sn, left_on="hk_nation", right_on="hk_nation").rename( {"n_name": "cust_nation", "hk_nation": "hk_cust_nation"} )
df = ( lineitem.join(supp_nation, left_on="hk_supplier", right_on="hk_supplier") .join(cust_nation, left_on="hk_order", right_on="hk_order") .filter( ((col("supp_nation") == lit(nation1)) & (col("cust_nation") == lit(nation2))) | ((col("supp_nation") == lit(nation2)) & (col("cust_nation") == lit(nation1))) ) )
result = ( df.with_columns(col("l_shipdate").dt.year().alias("l_year")) .with_columns((col("l_extendedprice") * (lit(1) - col("l_discount"))).alias("revenue")) .group_by("supp_nation", "cust_nation", "l_year") .agg( col("revenue").sum().alias("revenue"), ) ) return result.sort("supp_nation", "cust_nation", "l_year")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 DataVault
bench = DataVault(scale_factor=0.01) # your scale factorqueries = bench.get_queries(dialect="datafusion") # your platform's dialect; drop dialect= for native SQLprint(queries[7])For the DataFrame form:
from benchbox.core.query_catalog import get_dataframe_render
print(get_dataframe_render('datavault', '7', family="expression").source) # or family="pandas"Source
Query text: benchbox/core/datavault/queries.py