✔ PASS Search & Retrieval task_071_Q71_search_journey_order_attribution Scaled: 1M+ Records Ordered: Yes

Customer Search-to-Purchase Path Attribution (Session Query Lift)

Candidate Latency (1M Rows)
247.89 ms
(1.1x slower than golden)
Golden Latency (1M Rows)
227.26 ms
DuckDB in-memory engine
Underlying Data Volume
2,000,000 rows
61.0 MiB across 2 tables
Evaluated Model
gemini-3.8-flash-low
Gen Latency: 19.6s
✔ Correctness Verified on 1M+ Records
Candidate SQL output matches ground truth golden query across all multiset rows and numeric tolerances (tol=1e-3). Zero data skew or anti-patterns detected on full dataset scale.

1. Analytical Significance & What It Means

Scenario & Frontier Trap
Business Scenario & Problem

E-commerce search product managers need to know which search queries drove actual revenue. We link search queries to checkout events within the same 30-minute session.

⚡ The Frontier Trap (Why LLMs Fail)

Attributing purchases to search queries that occurred after the purchase order was placed.

Prompt / User Request Given to Model
E-commerce search product managers need to know which search queries drove actual revenue. We link search queries to checkout events within the same 30-minute session.

Execute the required analytical SQL calculation in DuckDB.
Expected output columns: order_id, user_id, order_total, attributing_search_query, searched_at, ordered_at.
Results should be ordered as specified.

2. Underlying Tables, Row Counts & Data Volume

2 Tables (2,000,000 rows • 61.0 MiB)

Production-scale fixtures loaded into the isolated DuckDB sandbox with at least 1,000,000 records per table:

📊 completed_orders 1,000,000 rows 30.5 MiB Data Volume
order_id (INTEGER) user_id (INTEGER) order_total (DECIMAL(10,2)) ordered_at (TIMESTAMP)
Data Preview (showing sample rows from 1,000,000 total rows):
# order_id user_id order_total ordered_at
1 1,001 50 349.99 2026-03-01 14:25:00
2 1,001 50 337.84 2026-03-01 09:30:00.000002
3 1,002 51 414.3 2026-03-01 09:30:00.000030
4 1,003 52 392.97 2026-03-01 09:30:00.000047
5 1,004 53 389.91 2026-03-01 09:30:00.000066
6 1,005 54 342.54 2026-03-01 09:30:00.000081
7 1,006 55 411.71 2026-03-01 09:30:00.000109
8 1,007 56 366.16 2026-03-01 09:30:00.000122
9 1,008 57 257.57 2026-03-01 09:30:00.000154
10 1,009 58 326.13 2026-03-01 09:30:00.000164
11 1,010 59 265.78 2026-03-01 09:30:00.000193
12 1,011 60 373.45 2026-03-01 09:30:00.000204
13 1,012 61 490.31 2026-03-01 09:30:00.000241
14 1,013 62 340.11 2026-03-01 09:30:00.000242
15 1,014 63 310.58 2026-03-01 09:30:00.000266
📊 user_search_queries 1,000,000 rows 30.5 MiB Data Volume
user_id (INTEGER) query_term (VARCHAR) searched_at (TIMESTAMP)
Data Preview (showing sample rows from 1,000,000 total rows):
# user_id query_term searched_at
1 50 noise canceling headphones 2026-03-01 14:10:00
2 50 sony xm5 sale 2026-03-01 14:15:00
3 50 noise canceling headphones 2026-03-01 09:30:00.000006
4 51 sony xm5 sale 2026-03-01 09:30:00.000041
5 52 noise canceling headphones 2026-03-01 09:30:00.000042
6 53 sony xm5 sale 2026-03-01 09:30:00.000062
7 54 noise canceling headphones 2026-03-01 09:30:00.000082
8 55 sony xm5 sale 2026-03-01 09:30:00.000111
9 56 noise canceling headphones 2026-03-01 09:30:00.000127
10 57 sony xm5 sale 2026-03-01 09:30:00.000143
11 58 noise canceling headphones 2026-03-01 09:30:00.000174
12 59 sony xm5 sale 2026-03-01 09:30:00.000188
13 60 noise canceling headphones 2026-03-01 09:30:00.000213
14 61 sony xm5 sale 2026-03-01 09:30:00.000223
15 62 noise canceling headphones 2026-03-01 09:30:00.000254

3. Graphical Query Execution Plan & Cost Bottlenecks

Physical Operator Tree (DuckDB 2.0 Profiler)

Visual flowchart of the physical execution pipeline. Operators with high relative costs (≥ 20% of query runtime or heavy latency) are visually highlighted:

Pipeline Latency Distribution (Total Plan Time: 575.91 ms) Nodes consuming ≥ 20% of query runtime are highlighted with glowing borders
⏳ ORDER_BY 🔥 10.1% Cost
Latency: 58.04 ms
Rows In/Out: 533,770
Data Vol: 24.43 MB
⚠️ Heavy Execution Bottleneck (10.1% of query runtime)
📐 PROJECTION 0.1%
Latency: 0.62 ms
Rows In/Out: 533,770
Data Vol: 37.86 MB
📁 Projections: ['order_id', 'user_...
⚡ ASOF_JOIN 🔥 87.7% Cost
Latency: 505.34 ms
Rows In/Out: 533,770
Data Vol: 37.86 MB
⚠️ Heavy Execution Bottleneck (87.7% of query runtime)
🔍 TABLE_SCAN 0.3%
Latency: 1.93 ms
Rows In/Out: 999,999
Data Vol: 22.89 MB
📁 memory.main.completed_orders
🔍 TABLE_SCAN 1.7%
Latency: 9.98 ms
Rows In/Out: 1,000,000
Data Vol: 26.70 MB
📁 memory.main.user_search_queries
Operator Cost % Latency Processed Rows Data Volume Details / Table Status
ASOF_JOIN 87.7% 505.34 ms 533,770 37.86 MB - 🔥 BOTTLENECK
ORDER_BY 10.1% 58.04 ms 533,770 24.43 MB - 🔥 BOTTLENECK
TABLE_SCAN 1.7% 9.98 ms 1,000,000 26.70 MB memory.main.user_search_queries Normal
TABLE_SCAN 0.3% 1.93 ms 999,999 22.89 MB memory.main.completed_orders Normal
PROJECTION 0.1% 0.62 ms 533,770 37.86 MB Projections: ['order_id', 'user_id', 'order_tota Normal

4. Queries Executed (Candidate vs Golden Ground Truth)

Beautified & Syntax Highlighted
Candidate SQL Executed by gemini-3.8-flash-low (Runtime on 1M Rows: 247.89 ms)
-- Attribute purchase to the most recent search query prior to order

SELECT o.order_id,
       o.user_id,
       o.order_total,
       s.query_term AS attributing_search_query,
       s.searched_at,
       o.ordered_at
FROM completed_orders o asof
JOIN user_search_queries s ON o.user_id = s.user_id
AND o.ordered_at >= s.searched_at
ORDER BY o.order_id;
Golden Reference Ground Truth SQL (Runtime on 1M Rows: 227.26 ms)
-- Attribute purchase to the most recent search query prior to order

SELECT o.order_id,
       o.user_id,
       o.order_total,
       s.query_term AS attributing_search_query,
       s.searched_at,
       o.ordered_at
FROM completed_orders o asof
JOIN user_search_queries s ON o.user_id = s.user_id
AND o.ordered_at >= s.searched_at
ORDER BY o.order_id;
DuckDB Fixture Setup DDL & Data Population
CREATE TABLE user_search_queries (user_id INT, query_term VARCHAR, searched_at TIMESTAMP);


CREATE TABLE completed_orders (order_id INT, user_id INT, order_total decimal(10, 2),
                                                                      ordered_at TIMESTAMP);


INSERT INTO user_search_queries
VALUES (50, 'noise canceling headphones', '2026-03-01 14:10:00'),
       (50, 'sony xm5 sale', '2026-03-01 14:15:00');


INSERT INTO completed_orders
VALUES (1001, 50, 349.99, '2026-03-01 14:25:00');

5. Query Results & Expected Ground Truth

Tabular Comparison
Actual Candidate Output (533,770 rows × 6 cols)
# order_id user_id order_total attributing_search_query searched_at ordered_at
1 1,001 50 349.99 sony xm5 sale 2026-03-01 14:15:00 2026-03-01 14:25:00
2 1,003 52 392.97 noise canceling headphones 2026-03-01 09:30:00.000042 2026-03-01 09:30:00.000047
3 1,004 53 389.91 sony xm5 sale 2026-03-01 09:30:00.000062 2026-03-01 09:30:00.000066
4 1,008 57 257.57 sony xm5 sale 2026-03-01 09:30:00.000143 2026-03-01 09:30:00.000154
5 1,010 59 265.78 sony xm5 sale 2026-03-01 09:30:00.000188 2026-03-01 09:30:00.000193
6 1,012 61 490.31 sony xm5 sale 2026-03-01 09:30:00.000223 2026-03-01 09:30:00.000241
7 1,014 63 310.58 sony xm5 sale 2026-03-01 09:30:00.000264 2026-03-01 09:30:00.000266
8 1,017 66 291.52 noise canceling headphones 2026-03-01 09:30:00.000329 2026-03-01 09:30:00.000329
9 1,018 67 324.79 sony xm5 sale 2026-03-01 09:30:00.000341 2026-03-01 09:30:00.000344
10 1,019 68 420.22 noise canceling headphones 2026-03-01 09:30:00.000367 2026-03-01 09:30:00.000371
11 1,020 69 231.35 sony xm5 sale 2026-03-01 09:30:00.000395 2026-03-01 09:30:00.000398
12 1,024 73 393.78 sony xm5 sale 2026-03-01 09:30:00.000462 2026-03-01 09:30:00.000467
13 1,026 75 301.47 sony xm5 sale 2026-03-01 09:30:00.000505 2026-03-01 09:30:00.000507
14 1,027 76 288.13 noise canceling headphones 2026-03-01 09:30:00.000522 2026-03-01 09:30:00.000529
15 1,028 77 375.72 sony xm5 sale 2026-03-01 09:30:00.000542 2026-03-01 09:30:00.000544
16 1,031 80 454.06 noise canceling headphones 2026-03-01 09:30:00.000611 2026-03-01 09:30:00.000616
17 1,033 82 300.66 noise canceling headphones 2026-03-01 09:30:00.000643 2026-03-01 09:30:00.000648
18 1,038 87 282.11 sony xm5 sale 2026-03-01 09:30:00.000740 2026-03-01 09:30:00.000750
19 1,043 92 402.84 noise canceling headphones 2026-03-01 09:30:00.000840 2026-03-01 09:30:00.000848
20 1,047 96 325.85 noise canceling headphones 2026-03-01 09:30:00.000924 2026-03-01 09:30:00.000924
21 1,048 97 430.79 sony xm5 sale 2026-03-01 09:30:00.000946 2026-03-01 09:30:00.000952
22 1,049 98 336.34 noise canceling headphones 2026-03-01 09:30:00.000960 2026-03-01 09:30:00.000962
23 1,052 101 425.22 sony xm5 sale 2026-03-01 09:30:00.001023 2026-03-01 09:30:00.001031
24 1,053 102 272.34 noise canceling headphones 2026-03-01 09:30:00.001051 2026-03-01 09:30:00.001052
25 1,054 103 311.43 sony xm5 sale 2026-03-01 09:30:00.001062 2026-03-01 09:30:00.001066
Showing first 25 of 533,770 total rows.
Expected Golden Output (533,770 rows × 6 cols)
# order_id user_id order_total attributing_search_query searched_at ordered_at
1 1,001 50 349.99 sony xm5 sale 2026-03-01 14:15:00 2026-03-01 14:25:00
2 1,003 52 392.97 noise canceling headphones 2026-03-01 09:30:00.000042 2026-03-01 09:30:00.000047
3 1,004 53 389.91 sony xm5 sale 2026-03-01 09:30:00.000062 2026-03-01 09:30:00.000066
4 1,008 57 257.57 sony xm5 sale 2026-03-01 09:30:00.000143 2026-03-01 09:30:00.000154
5 1,010 59 265.78 sony xm5 sale 2026-03-01 09:30:00.000188 2026-03-01 09:30:00.000193
6 1,012 61 490.31 sony xm5 sale 2026-03-01 09:30:00.000223 2026-03-01 09:30:00.000241
7 1,014 63 310.58 sony xm5 sale 2026-03-01 09:30:00.000264 2026-03-01 09:30:00.000266
8 1,017 66 291.52 noise canceling headphones 2026-03-01 09:30:00.000329 2026-03-01 09:30:00.000329
9 1,018 67 324.79 sony xm5 sale 2026-03-01 09:30:00.000341 2026-03-01 09:30:00.000344
10 1,019 68 420.22 noise canceling headphones 2026-03-01 09:30:00.000367 2026-03-01 09:30:00.000371
11 1,020 69 231.35 sony xm5 sale 2026-03-01 09:30:00.000395 2026-03-01 09:30:00.000398
12 1,024 73 393.78 sony xm5 sale 2026-03-01 09:30:00.000462 2026-03-01 09:30:00.000467
13 1,026 75 301.47 sony xm5 sale 2026-03-01 09:30:00.000505 2026-03-01 09:30:00.000507
14 1,027 76 288.13 noise canceling headphones 2026-03-01 09:30:00.000522 2026-03-01 09:30:00.000529
15 1,028 77 375.72 sony xm5 sale 2026-03-01 09:30:00.000542 2026-03-01 09:30:00.000544
16 1,031 80 454.06 noise canceling headphones 2026-03-01 09:30:00.000611 2026-03-01 09:30:00.000616
17 1,033 82 300.66 noise canceling headphones 2026-03-01 09:30:00.000643 2026-03-01 09:30:00.000648
18 1,038 87 282.11 sony xm5 sale 2026-03-01 09:30:00.000740 2026-03-01 09:30:00.000750
19 1,043 92 402.84 noise canceling headphones 2026-03-01 09:30:00.000840 2026-03-01 09:30:00.000848
20 1,047 96 325.85 noise canceling headphones 2026-03-01 09:30:00.000924 2026-03-01 09:30:00.000924
21 1,048 97 430.79 sony xm5 sale 2026-03-01 09:30:00.000946 2026-03-01 09:30:00.000952
22 1,049 98 336.34 noise canceling headphones 2026-03-01 09:30:00.000960 2026-03-01 09:30:00.000962
23 1,052 101 425.22 sony xm5 sale 2026-03-01 09:30:00.001023 2026-03-01 09:30:00.001031
24 1,053 102 272.34 noise canceling headphones 2026-03-01 09:30:00.001051 2026-03-01 09:30:00.001052
25 1,054 103 311.43 sony xm5 sale 2026-03-01 09:30:00.001062 2026-03-01 09:30:00.001066
Showing first 25 of 533,770 total rows.
← Prev: Search Snippet Extraction... ⊞ Back to Benchmark Dashboard Next: Fuzzy Customer Entity Res... →