Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/sql-benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,29 @@ on:
{"engine": "datafusion", "format": "vortex"}
],
"scale_factor": "1"
},
{
"id": "appian-nvme",
"subcommand": "appian",
"name": "Appian on NVME",
"data_formats": ["parquet", "vortex", "vortex-compact", "duckdb"],
"pr_targets": [
{"engine": "datafusion", "format": "parquet"},
{"engine": "datafusion", "format": "vortex"},
{"engine": "duckdb", "format": "parquet"},
{"engine": "duckdb", "format": "vortex"},
{"engine": "duckdb", "format": "duckdb"}
],
"develop_targets": [
{"engine": "datafusion", "format": "parquet"},
{"engine": "datafusion", "format": "vortex"},
{"engine": "datafusion", "format": "vortex-compact"},
{"engine": "duckdb", "format": "parquet"},
{"engine": "duckdb", "format": "vortex"},
{"engine": "duckdb", "format": "vortex-compact"},
{"engine": "duckdb", "format": "duckdb"}
],
"iterations": "10"
}
]

Expand Down
2 changes: 1 addition & 1 deletion bench-orchestrator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ vx-bench run <benchmark> [options]

**Arguments:**

- `benchmark`: Benchmark suite to run (`tpch`, `tpcds`, `clickbench`, `fineweb`, `gh-archive`, `polarsignals`, `public-bi`, `statpopgen`)
- `benchmark`: Benchmark suite to run (`appian`, `tpch`, `tpcds`, `clickbench`, `fineweb`, `gh-archive`, `polarsignals`, `public-bi`, `statpopgen`)

**Options:**

Expand Down
1 change: 1 addition & 0 deletions bench-orchestrator/bench_orchestrator/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class Format(Enum):
class Benchmark(Enum):
"""Available benchmark suites."""

APPIAN = "appian"
TPCH = "tpch"
TPCDS = "tpcds"
CLICKBENCH = "clickbench"
Expand Down
8 changes: 8 additions & 0 deletions vortex-bench/appian/q1.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
SELECT address_state AS g0, sum(orderItem_quantity) AS p0
FROM CustomerView c
LEFT OUTER JOIN AddressView a ON c.customer_id = a.address_customerId
LEFT OUTER JOIN OrderView o ON c.customer_id = o.order_customerId
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
GROUP BY address_state
ORDER BY address_state
LIMIT 500;
66 changes: 66 additions & 0 deletions vortex-bench/appian/q2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
SELECT
a.address_state AS g0,
t1rp1 AS g1,
t2rp1 AS g2,
max(t5rp1) AS p0,
avg(t8rp1 * t8rp2) AS p1,
max(t6rp1) AS p2,
count(c.customer_priority) AS p3,
coalesce(avg(t7rp1), 0.0) AS p4
FROM CustomerView c
LEFT OUTER JOIN AddressView a ON c.customer_id = a.address_customerId
LEFT OUTER JOIN TaxRecordView t ON a.address_id = t.taxRecord_addressId
LEFT OUTER JOIN (
SELECT sum(creditCard_cvv) AS t1rp1, c.customer_id AS t1pk
FROM CustomerView c
LEFT OUTER JOIN CreditCardView cc ON c.customer_id = cc.creditCard_customerId
GROUP BY c.customer_id
) t1 ON c.customer_id = t1.t1pk
LEFT OUTER JOIN (
SELECT min(p.product_likes) AS t2rp1, c.customer_id AS t2pk
FROM CustomerView c
LEFT OUTER JOIN OrderView o ON c.customer_id = o.order_customerId
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
LEFT OUTER JOIN ProductView p ON oi.orderItem_productId = p.product_id
LEFT OUTER JOIN CategoryView ca ON p.product_categoryName = ca.category_name
WHERE ca.category_seasonal = TRUE
GROUP BY c.customer_id
) t2 ON c.customer_id = t2.t2pk
LEFT OUTER JOIN (
SELECT max(o.order_subShipments) AS t5rp1, c.customer_id AS t5pk
FROM CustomerView c
LEFT OUTER JOIN OrderView o ON c.customer_id = o.order_customerId
GROUP BY c.customer_id
) t5 ON c.customer_id = t5pk
LEFT OUTER JOIN (
SELECT max(coalesce(oi.orderItem_weight, 1)) AS t6rp1, c.customer_id AS t6pk
FROM CustomerView c
LEFT OUTER JOIN OrderView o ON c.customer_id = o.order_customerId
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
WHERE o.order_serverId IN (1, 3, 5)
GROUP BY c.customer_id
) t6 ON c.customer_id = t6pk
LEFT OUTER JOIN (
SELECT count(ca.category_seasonal) AS t7rp1, c.customer_id AS t7pk
FROM CustomerView c
LEFT OUTER JOIN OrderView o ON c.customer_id = o.order_customerId
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
LEFT OUTER JOIN ProductView p ON oi.orderItem_productId = p.product_id
LEFT OUTER JOIN CategoryView ca ON p.product_categoryName = ca.category_name
WHERE ca.category_perishable = TRUE
GROUP BY c.customer_id
) t7 ON c.customer_id = t7pk
LEFT OUTER JOIN (
SELECT
sum(creditCard_zip) AS t8rp1,
sum(creditCard_lastChargeAmount) AS t8rp2,
c.customer_id AS t8pk
FROM CustomerView c
LEFT OUTER JOIN OrderView o ON c.customer_id = o.order_customerId
LEFT OUTER JOIN CreditCardView cc ON o.order_creditCardNumber = cc.creditCard_number
GROUP BY c.customer_id
) t8 ON c.customer_id = t8pk
WHERE t.taxRecord_value > 149670.0
GROUP BY a.address_state, t1rp1, t2rp1
ORDER BY g0, p0, p1
LIMIT 500;
37 changes: 37 additions & 0 deletions vortex-bench/appian/q3.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
SELECT
c.customer_priority AS g0,
t1rp1 AS g1,
t.taxRecord_bracket AS g2,
sum(oi.orderItem_weight) AS p0,
max(ca.category_demandScore) AS p1,
max(ca.category_auditDate) AS p2,
CAST(avg(ca.category_valuation) AS int) AS p3,
sum(t1rp2) AS p4,
sum(
CASE
WHEN p.product_inventoryLastOrderedOn - ca.category_auditDate > 300 THEN 1
WHEN p.product_inventoryLastOrderedOn - ca.category_auditDate > 150 THEN 10
WHEN p.product_inventoryLastOrderedOn - ca.category_auditDate > 0 THEN 100
ELSE 1000
END +(c.customer_priority * a.address_zone)) AS p5
FROM OrderItemView oi
LEFT OUTER JOIN OrderView o ON oi.orderItem_orderId = o.order_id
LEFT OUTER JOIN ProductView p ON oi.orderItem_productId = p.product_id
LEFT OUTER JOIN CreditCardView cc ON o.order_creditCardNumber = cc.creditCard_number
LEFT OUTER JOIN CustomerView c ON o.order_customerId = c.customer_id
LEFT OUTER JOIN AddressView a ON c.customer_id = a.address_customerId
LEFT OUTER JOIN TaxRecordView t ON a.address_id = t.taxRecord_addressId
LEFT OUTER JOIN CategoryView ca ON p.product_categoryName = ca.category_name
LEFT OUTER JOIN (
SELECT
min(cc.creditCard_expirationDate) AS t1rp1,
sum(cc.creditCard_lastChargeAmount) AS t1rp2,
c.customer_id AS t1pk
FROM CustomerView c
LEFT OUTER JOIN CreditCardView cc ON c.customer_id = cc.creditCard_customerId
GROUP BY c.customer_id
) t1 ON c.customer_id = t1pk
WHERE cc.creditCard_lastChargeAmount > 90.0 AND p.product_price > 34.0
GROUP BY c.customer_priority, t1rp1, t.taxRecord_bracket
ORDER BY p1, p3, g2
LIMIT 500;
50 changes: 50 additions & 0 deletions vortex-bench/appian/q4.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
SELECT
t2rp1 AS g0,
t3rp1 AS g1,
t4rp1 AS g2,
CAST(avg(cc.creditCard_lastChargeAmount) AS int) AS p0,
min(cc.creditCard_lastChargeTimestamp) AS p1,
count(DISTINCT (cc.creditCard_holder)) AS p2
FROM CategoryView ca
LEFT OUTER JOIN ProductView p ON ca.category_name = p.product_categoryName
LEFT OUTER JOIN OrderItemView oi ON p.product_id = oi.orderItem_productId
LEFT OUTER JOIN OrderView o ON oi.orderItem_orderId = o.order_id
LEFT OUTER JOIN CreditCardView cc ON o.order_creditCardNumber = cc.creditCard_number
LEFT OUTER JOIN (
SELECT sum(taxRecord_bracket) AS t1rp1, ca.category_name AS t1pk
FROM CategoryView ca
LEFT OUTER JOIN ProductView p ON ca.category_name = p.product_categoryName
LEFT OUTER JOIN OrderItemView oi ON p.product_id = oi.orderItem_productId
LEFT OUTER JOIN OrderView o ON oi.orderItem_orderId = o.order_id
LEFT OUTER JOIN CustomerView c ON o.order_customerId = c.customer_id
LEFT OUTER JOIN AddressView a ON c.customer_id = a.address_customerId
LEFT OUTER JOIN TaxRecordView t ON a.address_id = t.taxRecord_addressId
GROUP BY ca.category_name
) t1 ON ca.category_name = t1pk
LEFT OUTER JOIN (
SELECT max(p.product_likes) AS t2rp1, ca.category_name AS t2pk
FROM CategoryView ca
LEFT OUTER JOIN ProductView p ON ca.category_name = p.product_categoryName
GROUP BY ca.category_name
) t2 ON ca.category_name = t2pk
LEFT OUTER JOIN (
SELECT sum(oi.orderItem_productGroup) AS t3rp1, ca.category_name AS t3pk
FROM CategoryView ca
LEFT OUTER JOIN ProductView p ON ca.category_name = p.product_categoryName
LEFT OUTER JOIN OrderItemView oi ON p.product_id = oi.orderItem_productId
WHERE oi.orderItem_weight > 15.0
GROUP BY ca.category_name
) t3 ON ca.category_name = t3pk
LEFT OUTER JOIN (
SELECT max(cc.creditCard_zip) AS t4rp1, ca.category_name AS t4pk
FROM CategoryView ca
LEFT OUTER JOIN ProductView p ON ca.category_name = p.product_categoryName
LEFT OUTER JOIN OrderItemView oi ON p.product_id = oi.orderItem_productId
LEFT OUTER JOIN OrderView o ON oi.orderItem_orderId = o.order_id
LEFT OUTER JOIN CreditCardView cc ON o.order_creditCardNumber = cc.creditCard_number
GROUP BY ca.category_name
) t4 ON ca.category_name = t4pk
WHERE t1rp1 > 6
GROUP BY t2rp1, t3rp1, t4rp1
ORDER BY g1, p2
LIMIT 500;
24 changes: 24 additions & 0 deletions vortex-bench/appian/q5.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
SELECT t.taxRecord_rate AS g0, t2rp1 AS g1, min(c.customer_balance) AS p0
FROM TaxRecordView t
LEFT OUTER JOIN AddressView a ON t.taxRecord_addressId = a.address_id
LEFT OUTER JOIN CustomerView c ON a.address_customerId = c.customer_id
LEFT OUTER JOIN (
SELECT min(o.order_placedOn) AS t1rp1, t.taxRecord_id AS t1pk
FROM TaxRecordView t
LEFT OUTER JOIN AddressView a ON t.taxRecord_addressId = a.address_id
LEFT OUTER JOIN OrderView o ON a.address_customerId = o.order_customerId
GROUP BY t.taxRecord_id
) t1 ON t.taxRecord_id = t1pk
LEFT OUTER JOIN (
SELECT sum(p.product_price * oi.orderItem_quantity) AS t2rp1, t.taxRecord_id AS t2pk
FROM TaxRecordView t
LEFT OUTER JOIN AddressView a ON t.taxRecord_addressId = a.address_id
LEFT OUTER JOIN OrderView o ON a.address_customerId = o.order_customerId
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
LEFT OUTER JOIN ProductView p ON oi.orderItem_productId = p.product_id
GROUP BY t.taxRecord_id
) t2 ON t.taxRecord_id = t2pk
WHERE t1rp1 > '2020-01-14 12:12:30.0'
GROUP BY t.taxRecord_rate, t2rp1
ORDER BY p0
LIMIT 500;
47 changes: 47 additions & 0 deletions vortex-bench/appian/q6.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
SELECT
t1rp2 AS g0,
sum(t1rp3) / sum(t1rp4) AS p0,
sum(
CASE
WHEN t1rp5 > 1 THEN 1
WHEN t2rp1 > 20200 THEN 2
WHEN t1rp6 > 15 THEN 3
WHEN t3rp1 > 150 THEN 4
ELSE 5
END) AS p1
FROM ProductView p
LEFT OUTER JOIN (
SELECT
avg(a.address_valuation) AS t1rp1,
sum(a.address_zone) AS t1rp2,
sum(a.address_zone) AS t1rp3,
count(a.address_zone) AS t1rp4,
avg(o.order_serverId) AS t1rp5,
avg(c.customer_balance) AS t1rp6,
p.product_id AS t1pk
FROM ProductView p
LEFT OUTER JOIN OrderItemView oi ON p.product_id = oi.orderItem_productId
LEFT OUTER JOIN OrderView o ON oi.orderItem_orderId = o.order_id
LEFT OUTER JOIN AddressView a ON o.order_customerId = a.address_customerId
LEFT OUTER JOIN CustomerView c ON o.order_customerId = c.customer_id
GROUP BY p.product_id
) t1 ON p.product_id = t1pk
LEFT OUTER JOIN (
SELECT min(a.address_zip) AS t2rp1, p.product_id AS t2pk
FROM ProductView p
LEFT OUTER JOIN OrderItemView oi ON p.product_id = oi.orderItem_productId
LEFT OUTER JOIN OrderView o ON oi.orderItem_orderId = o.order_id
LEFT OUTER JOIN AddressView a ON o.order_customerId = a.address_customerId
WHERE a.address_state IN ('PA', 'CA', 'VA', 'MA', 'ME', 'MD', 'CO', 'MO')
GROUP BY p.product_id
) t2 ON p.product_id = t2pk
LEFT OUTER JOIN (
SELECT ca.category_warehouseSqft AS t3rp1, p.product_id AS t3pk
FROM ProductView p
LEFT OUTER JOIN CategoryView ca ON p.product_categoryName = ca.category_name
WHERE ca.category_seasonal = TRUE
) t3 ON p.product_id = t3pk
WHERE t1rp1 > 10000.0
GROUP BY t1rp2
ORDER BY p0
LIMIT 500;
35 changes: 35 additions & 0 deletions vortex-bench/appian/q7.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
SELECT
t1rp1 AS g0,
t2rp1 AS g1,
c.customer_age AS g2,
c.customer_balance AS g3,
count(c.customer_name) AS p0,
sum(c.customer_age) AS p1
FROM CustomerView c
LEFT OUTER JOIN AddressView a ON c.customer_id = a.address_customerId
LEFT OUTER JOIN TaxRecordView t ON a.address_id = t.taxRecord_addressId
LEFT OUTER JOIN (
SELECT avg(oi.orderItem_weight) AS t1rp1, c.customer_id AS t1pk
FROM CustomerView c
LEFT OUTER JOIN OrderView o ON c.customer_id = o.order_customerId
LEFT OUTER JOIN CreditCardView cc ON o.order_creditCardNumber = cc.creditCard_number
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
WHERE creditCard_cvv IN (113, 115, 117, 119, 121)
GROUP BY c.customer_id
) t1 ON c.customer_id = t1pk
LEFT OUTER JOIN (
SELECT
avg((oi.orderItem_quantity * p.product_price) /(oi.orderItem_weight + oi.orderItem_sku)) AS t2rp1,
c.customer_id AS t2pk
FROM CustomerView c
LEFT OUTER JOIN OrderView o ON c.customer_id = o.order_customerId
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
LEFT OUTER JOIN ProductView p ON oi.orderItem_productId = p.product_id
LEFT OUTER JOIN CategoryView ca ON p.product_categoryName = ca.category_name
WHERE ca.category_name IN ('Pet', 'Food', 'Game', 'Software')
GROUP BY c.customer_id
) t2 ON c.customer_id = t2pk
WHERE t.taxRecord_bracketThreshold IN (22, 24, 27, 29)
GROUP BY t1rp1, t2rp1, c.customer_age, c.customer_balance
ORDER BY p0, p1
LIMIT 500;
65 changes: 65 additions & 0 deletions vortex-bench/appian/q8.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
SELECT
t4rp1 AS g0,
t5rp1 AS g1,
sum(creditCard_lastChargeAmount) AS p0,
min(t6rp1) AS p1,
sum(t3rp2) AS p2
FROM CreditCardView cc
LEFT OUTER JOIN (
SELECT min(order_id) AS t1rp1, creditCard_number AS t1pk
FROM CreditCardView cc
LEFT OUTER JOIN OrderView o ON cc.creditCard_number = o.order_creditCardNumber
WHERE order_slaProbability > 0.125
GROUP BY creditCard_number
) t1 ON cc.creditCard_number = t1pk
LEFT OUTER JOIN (
SELECT sum(orderItem_weight) AS t2rp1, creditCard_number AS t2pk
FROM CreditCardView cc
LEFT OUTER JOIN OrderView o ON cc.creditCard_number = o.order_creditCardNumber
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
GROUP BY creditCard_number
) t2 ON cc.creditCard_number = t2pk
LEFT OUTER JOIN (
SELECT
min(address_zip) AS t3rp1,
sum(taxRecord_bracketThreshold) AS t3rp2,
creditCard_number AS t3pk
FROM CreditCardView cc
LEFT OUTER JOIN OrderView o ON cc.creditCard_number = o.order_creditCardNumber
LEFT OUTER JOIN CustomerView c ON o.order_customerId = c.customer_id
LEFT OUTER JOIN AddressView a ON c.customer_id = a.address_customerId
LEFT OUTER JOIN TaxRecordView t ON a.address_id = t.taxRecord_addressId
GROUP BY creditCard_number
) t3 ON cc.creditCard_number = t3pk
LEFT OUTER JOIN (
SELECT sum(product_price) AS t4rp1, creditCard_number AS t4pk
FROM CreditCardView cc
LEFT OUTER JOIN OrderView o ON cc.creditCard_number = o.order_creditCardNumber
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
LEFT OUTER JOIN ProductView p ON oi.orderItem_productId = p.product_id
WHERE orderItem_weight < 25.0
GROUP BY creditCard_number
) t4 ON cc.creditCard_number = t4pk
LEFT OUTER JOIN (
SELECT sum(category_regulationProbability) AS t5rp1, creditCard_number AS t5pk
FROM CreditCardView cc
LEFT OUTER JOIN OrderView o ON cc.creditCard_number = o.order_creditCardNumber
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
LEFT OUTER JOIN ProductView p ON oi.orderItem_productId = p.product_id
LEFT OUTER JOIN CategoryView ca ON p.product_categoryName = ca.category_name
GROUP BY creditCard_number
) t5 ON cc.creditCard_number = t5pk
LEFT OUTER JOIN (
SELECT min(product_inventoryLastOrderedOn) AS t6rp1, creditCard_number AS t6pk
FROM CreditCardView cc
LEFT OUTER JOIN OrderView o ON cc.creditCard_number = o.order_creditCardNumber
LEFT OUTER JOIN OrderItemView oi ON o.order_id = oi.orderItem_orderId
LEFT OUTER JOIN ProductView p ON oi.orderItem_productId = p.product_id
LEFT OUTER JOIN CategoryView ca ON p.product_categoryName = ca.category_name
WHERE product_price < 200.0
GROUP BY creditCard_number
) t6 ON cc.creditCard_number = t6pk
WHERE t1rp1 > 10000 OR t2rp1 > 15 OR t3rp1 > 20200
GROUP BY t4rp1, t5rp1
ORDER BY p0, p1, p2
LIMIT 500;
Loading
Loading