Skip to content

Commit ae4e3e2

Browse files
committed
extended sql parser
1 parent 2d2e4b0 commit ae4e3e2

1 file changed

Lines changed: 99 additions & 0 deletions

File tree

testdata/site_quality.sql

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
WITH params AS (
2+
SELECT
3+
DATE_SUB(CURRENT_DATE(), INTERVAL $EndDayInterval DAY) AS end_date,
4+
DATE_SUB(CURRENT_DATE(), INTERVAL $StartDayInterval DAY) AS start_date,
5+
CAST(GREATEST($Page, 1) AS INT64) AS page_number,
6+
CAST(COALESCE($PageSize, 25) AS INT64) AS page_size
7+
),
8+
9+
perf AS (
10+
SELECT
11+
p.agency_id,
12+
p.advertiser_id,
13+
p.campaign_id,
14+
p.order_id AS ad_order_id,
15+
p.site_id,
16+
SUM(p.bids) AS bids,
17+
SUM(p.impressions) AS imps,
18+
SUM(p.clicks) AS clicks,
19+
SUM(IFNULL(p.total_spend, 0)) AS spend
20+
FROM `viant-performance.metrics.fact_performance_hour` p
21+
JOIN params prm ON TRUE
22+
WHERE p.event_date BETWEEN prm.start_date AND prm.end_date
23+
GROUP BY 1,2,3,4,5
24+
),
25+
26+
active_domains AS (
27+
SELECT DISTINCT
28+
s.ID AS site_id,
29+
COALESCE(
30+
NULLIF(TRIM(s.DISPLAY_NAME), ''),
31+
NULLIF(TRIM(s.NAME), ''),
32+
CAST(s.ID AS STRING)
33+
) AS site_name,
34+
(LOWER(REGEXP_REPLACE(COALESCE(NULLIF(TRIM(s.NAME), ''), NULLIF(TRIM(s.MOBILE_URL), ''), ''),r'^(?:https?://)?(?:www\.)?', ''))) AS site_domain
35+
FROM `viant-adelphic.ci_ads.CI_SITE` s
36+
JOIN perf p ON p.site_id = s.ID
37+
),
38+
39+
jounce AS (
40+
SELECT
41+
j.root_domain,
42+
ARRAY_AGG(j.jounce_classification ORDER BY j.share_of_demand DESC LIMIT 1)[OFFSET(0)] AS jounce_classification,
43+
ARRAY_AGG(j.jounce_directness ORDER BY j.share_of_demand DESC LIMIT 1)[OFFSET(0)] AS jounce_directness,
44+
MAX(j.share_of_supply) AS share_of_supply,
45+
MAX(j.share_of_demand) AS share_of_demand
46+
FROM (
47+
SELECT * FROM `viant-ad-ops.jounce.monetization_v3_*`
48+
WHERE _TABLE_SUFFIX BETWEEN
49+
FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 3 DAY))
50+
AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
51+
QUALIFY _TABLE_SUFFIX = MAX(_TABLE_SUFFIX) OVER()
52+
) j
53+
JOIN active_domains ad ON j.root_domain = ad.site_domain
54+
GROUP BY j.root_domain
55+
),
56+
57+
enriched AS (
58+
SELECT
59+
p.agency_id,
60+
p.advertiser_id,
61+
p.campaign_id,
62+
p.ad_order_id,
63+
p.site_id,
64+
ad.site_name,
65+
ad.site_domain,
66+
COALESCE(j.jounce_classification, 'Unknown') AS jounce_classification,
67+
COALESCE(j.jounce_directness, 'Unknown') AS jounce_directness,
68+
IFNULL(j.share_of_supply, 0) AS share_of_supply,
69+
IFNULL(j.share_of_demand, 0) AS share_of_demand,
70+
p.bids,
71+
p.imps,
72+
p.clicks,
73+
p.spend,
74+
SAFE_DIVIDE(p.clicks, NULLIF(p.imps, 0)) AS ctr,
75+
SAFE_DIVIDE(p.spend, NULLIF(p.imps, 0)) * 1000 AS ecpm
76+
FROM perf p
77+
JOIN active_domains ad ON p.site_id = ad.site_id
78+
LEFT JOIN jounce j ON ad.site_domain = j.root_domain
79+
),
80+
81+
ranked AS (
82+
SELECT
83+
e.*,
84+
ROW_NUMBER() OVER (ORDER BY e.spend DESC, e.site_id) AS rn
85+
FROM enriched e
86+
WHERE e.spend > 0
87+
),
88+
89+
paged AS (
90+
SELECT r.*
91+
FROM ranked r
92+
JOIN params prm ON TRUE
93+
WHERE r.rn BETWEEN ((prm.page_number - 1) * prm.page_size + 1)
94+
AND (prm.page_number * prm.page_size)
95+
)
96+
97+
SELECT v.*
98+
FROM paged v
99+
ORDER BY v.rn

0 commit comments

Comments
 (0)