Skip to content

Commit 4fbc75e

Browse files
committed
fix PR reviews and linter issues with SQLFluff auto-fix
1 parent 1d3f247 commit 4fbc75e

File tree

5 files changed

+658
-499
lines changed

5 files changed

+658
-499
lines changed

sql/2025/sustainability/cms_bytes_per_type.sql

Lines changed: 192 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -13,149 +13,201 @@ DECLARE operational_emissions_network NUMERIC DEFAULT 0.059;
1313
DECLARE operational_emissions_user_devices NUMERIC DEFAULT 0.080;
1414

1515
WITH cms_data AS (
16-
SELECT
17-
client,
18-
page,
19-
tech.technology AS cms,
20-
CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 AS total_kb,
21-
22-
-- Operational emissions calculations
23-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * operational_emissions_data_centers * grid_intensity AS op_emissions_dc,
24-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * operational_emissions_network * grid_intensity AS op_emissions_networks,
25-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * operational_emissions_user_devices * grid_intensity AS op_emissions_devices,
26-
27-
-- Embodied emissions calculations
28-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * embodied_emissions_data_centers * grid_intensity AS em_emissions_dc,
29-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * embodied_emissions_network * grid_intensity AS em_emissions_networks,
30-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * embodied_emissions_user_devices * grid_intensity AS em_emissions_devices,
31-
32-
-- Total emissions (operational + embodied)
33-
(
34-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * operational_emissions_data_centers * grid_intensity +
35-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * operational_emissions_network * grid_intensity +
36-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * operational_emissions_user_devices * grid_intensity
37-
) AS total_operational_emissions,
38-
39-
(
40-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * embodied_emissions_data_centers * grid_intensity +
41-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * embodied_emissions_network * grid_intensity +
42-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * embodied_emissions_user_devices * grid_intensity
43-
) AS total_embodied_emissions,
44-
45-
(
46-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * operational_emissions_data_centers * grid_intensity +
47-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * operational_emissions_network * grid_intensity +
48-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * operational_emissions_user_devices * grid_intensity +
49-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * embodied_emissions_data_centers * grid_intensity +
50-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * embodied_emissions_network * grid_intensity +
51-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * embodied_emissions_user_devices * grid_intensity
52-
) AS total_emissions,
53-
54-
-- Proportions of each resource type relative to total bytes
55-
CAST(JSON_VALUE(summary, '$.bytesHtml') AS INT64) / CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) AS html_proportion,
56-
CAST(JSON_VALUE(summary, '$.bytesJS') AS INT64) / CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) AS js_proportion,
57-
CAST(JSON_VALUE(summary, '$.bytesCss') AS INT64) / CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) AS css_proportion,
58-
CAST(JSON_VALUE(summary, '$.bytesImg') AS INT64) / CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) AS img_proportion,
59-
CAST(JSON_VALUE(summary, '$.bytesFont') AS INT64) / CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) AS font_proportion,
60-
61-
-- Resource-specific emissions calculations
62-
(SAFE_DIVIDE(CAST(JSON_VALUE(summary, '$.bytesHtml') AS INT64), CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64)) * (
63-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * (
64-
operational_emissions_data_centers * grid_intensity +
65-
operational_emissions_network * grid_intensity +
66-
operational_emissions_user_devices * grid_intensity +
67-
embodied_emissions_data_centers * grid_intensity +
68-
embodied_emissions_network * grid_intensity +
69-
embodied_emissions_user_devices * grid_intensity
70-
)
71-
)) AS total_html_emissions,
72-
73-
(SAFE_DIVIDE(CAST(JSON_VALUE(summary, '$.bytesJS') AS INT64), CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64)) * (
74-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * (
75-
operational_emissions_data_centers * grid_intensity +
76-
operational_emissions_network * grid_intensity +
77-
operational_emissions_user_devices * grid_intensity +
78-
embodied_emissions_data_centers * grid_intensity +
79-
embodied_emissions_network * grid_intensity +
80-
embodied_emissions_user_devices * grid_intensity
81-
)
82-
)) AS total_js_emissions,
83-
84-
(SAFE_DIVIDE(CAST(JSON_VALUE(summary, '$.bytesCss') AS INT64), CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64)) * (
85-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * (
86-
operational_emissions_data_centers * grid_intensity +
87-
operational_emissions_network * grid_intensity +
88-
operational_emissions_user_devices * grid_intensity +
89-
embodied_emissions_data_centers * grid_intensity +
90-
embodied_emissions_network * grid_intensity +
91-
embodied_emissions_user_devices * grid_intensity
92-
)
93-
)) AS total_css_emissions,
94-
95-
(SAFE_DIVIDE(CAST(JSON_VALUE(summary, '$.bytesImg') AS INT64), CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64)) * (
96-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * (
97-
operational_emissions_data_centers * grid_intensity +
98-
operational_emissions_network * grid_intensity +
99-
operational_emissions_user_devices * grid_intensity +
100-
embodied_emissions_data_centers * grid_intensity +
101-
embodied_emissions_network * grid_intensity +
102-
embodied_emissions_user_devices * grid_intensity
103-
)
104-
)) AS total_img_emissions,
105-
106-
(SAFE_DIVIDE(CAST(JSON_VALUE(summary, '$.bytesFont') AS INT64), CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64)) * (
107-
(CAST(JSON_VALUE(summary, '$.bytesTotal') AS INT64) / 1024 / 1024 / 1024) * (
108-
operational_emissions_data_centers * grid_intensity +
109-
operational_emissions_network * grid_intensity +
110-
operational_emissions_user_devices * grid_intensity +
111-
embodied_emissions_data_centers * grid_intensity +
112-
embodied_emissions_network * grid_intensity +
113-
embodied_emissions_user_devices * grid_intensity
114-
)
115-
)) AS total_font_emissions,
116-
117-
-- Resource-specific size in KB
118-
CAST(JSON_VALUE(summary, '$.bytesHtml') AS INT64) / 1024 AS html_kb,
119-
CAST(JSON_VALUE(summary, '$.bytesJS') AS INT64) / 1024 AS js_kb,
120-
CAST(JSON_VALUE(summary, '$.bytesCss') AS INT64) / 1024 AS css_kb,
121-
CAST(JSON_VALUE(summary, '$.bytesImg') AS INT64) / 1024 AS img_kb,
122-
CAST(JSON_VALUE(summary, '$.bytesFont') AS INT64) / 1024 AS font_kb
123-
FROM
124-
`httparchive.crawl.pages`,
125-
UNNEST(technologies) AS tech
126-
WHERE
127-
date = '2025-07-01' AND
128-
is_root_page = TRUE AND
129-
'CMS' IN UNNEST(tech.categories)
16+
SELECT
17+
client,
18+
page,
19+
tech.technology AS cms,
20+
INT64(summary.bytestotal) / 1024 AS total_kb,
21+
22+
-- Operational emissions calculations
23+
(
24+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
25+
) * operational_emissions_data_centers * grid_intensity AS op_emissions_dc,
26+
(
27+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
28+
) * operational_emissions_network * grid_intensity AS op_emissions_networks,
29+
(
30+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
31+
) * operational_emissions_user_devices * grid_intensity AS op_emissions_devices,
32+
33+
-- Embodied emissions calculations
34+
(
35+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
36+
) * embodied_emissions_data_centers * grid_intensity AS em_emissions_dc,
37+
(
38+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
39+
) * embodied_emissions_network * grid_intensity AS em_emissions_networks,
40+
(
41+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
42+
) * embodied_emissions_user_devices * grid_intensity AS em_emissions_devices,
43+
44+
-- Total emissions (operational + embodied)
45+
(
46+
(
47+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
48+
) * operational_emissions_data_centers * grid_intensity +
49+
(
50+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
51+
) * operational_emissions_network * grid_intensity +
52+
(
53+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
54+
) * operational_emissions_user_devices * grid_intensity
55+
) AS total_operational_emissions,
56+
57+
(
58+
(
59+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
60+
) * embodied_emissions_data_centers * grid_intensity +
61+
(
62+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
63+
) * embodied_emissions_network * grid_intensity +
64+
(
65+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
66+
) * embodied_emissions_user_devices * grid_intensity
67+
) AS total_embodied_emissions,
68+
69+
(
70+
(
71+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
72+
) * operational_emissions_data_centers * grid_intensity +
73+
(
74+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
75+
) * operational_emissions_network * grid_intensity +
76+
(
77+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
78+
) * operational_emissions_user_devices * grid_intensity +
79+
(
80+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
81+
) * embodied_emissions_data_centers * grid_intensity +
82+
(
83+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
84+
) * embodied_emissions_network * grid_intensity +
85+
(
86+
INT64(summary.bytestotal) / 1024 / 1024 / 1024
87+
) * embodied_emissions_user_devices * grid_intensity
88+
) AS total_emissions,
89+
90+
-- Proportions of each resource type relative to total bytes
91+
INT64(summary.byteshtml) / INT64(summary.bytestotal) AS html_proportion,
92+
INT64(summary.bytesjs) / INT64(summary.bytestotal) AS js_proportion,
93+
INT64(summary.bytescss) / INT64(summary.bytestotal) AS css_proportion,
94+
INT64(summary.bytesimg) / INT64(summary.bytestotal) AS img_proportion,
95+
INT64(summary.bytesfont) / INT64(summary.bytestotal) AS font_proportion,
96+
97+
-- Resource-specific emissions calculations
98+
(SAFE_DIVIDE(INT64(summary.byteshtml), INT64(summary.bytestotal)) * (
99+
(INT64(summary.bytestotal) / 1024 / 1024 / 1024) * (
100+
operational_emissions_data_centers * grid_intensity +
101+
operational_emissions_network * grid_intensity +
102+
operational_emissions_user_devices * grid_intensity +
103+
embodied_emissions_data_centers * grid_intensity +
104+
embodied_emissions_network * grid_intensity +
105+
embodied_emissions_user_devices * grid_intensity
106+
)
107+
)) AS total_html_emissions,
108+
109+
(SAFE_DIVIDE(INT64(summary.bytesjs), INT64(summary.bytestotal)) * (
110+
(INT64(summary.bytestotal) / 1024 / 1024 / 1024) * (
111+
operational_emissions_data_centers * grid_intensity +
112+
operational_emissions_network * grid_intensity +
113+
operational_emissions_user_devices * grid_intensity +
114+
embodied_emissions_data_centers * grid_intensity +
115+
embodied_emissions_network * grid_intensity +
116+
embodied_emissions_user_devices * grid_intensity
117+
)
118+
)) AS total_js_emissions,
119+
120+
(SAFE_DIVIDE(INT64(summary.bytescss), INT64(summary.bytestotal)) * (
121+
(INT64(summary.bytestotal) / 1024 / 1024 / 1024) * (
122+
operational_emissions_data_centers * grid_intensity +
123+
operational_emissions_network * grid_intensity +
124+
operational_emissions_user_devices * grid_intensity +
125+
embodied_emissions_data_centers * grid_intensity +
126+
embodied_emissions_network * grid_intensity +
127+
embodied_emissions_user_devices * grid_intensity
128+
)
129+
)) AS total_css_emissions,
130+
131+
(SAFE_DIVIDE(INT64(summary.bytesimg), INT64(summary.bytestotal)) * (
132+
(INT64(summary.bytestotal) / 1024 / 1024 / 1024) * (
133+
operational_emissions_data_centers * grid_intensity +
134+
operational_emissions_network * grid_intensity +
135+
operational_emissions_user_devices * grid_intensity +
136+
embodied_emissions_data_centers * grid_intensity +
137+
embodied_emissions_network * grid_intensity +
138+
embodied_emissions_user_devices * grid_intensity
139+
)
140+
)) AS total_img_emissions,
141+
142+
(SAFE_DIVIDE(INT64(summary.bytesfont), INT64(summary.bytestotal)) * (
143+
(INT64(summary.bytestotal) / 1024 / 1024 / 1024) * (
144+
operational_emissions_data_centers * grid_intensity +
145+
operational_emissions_network * grid_intensity +
146+
operational_emissions_user_devices * grid_intensity +
147+
embodied_emissions_data_centers * grid_intensity +
148+
embodied_emissions_network * grid_intensity +
149+
embodied_emissions_user_devices * grid_intensity
150+
)
151+
)) AS total_font_emissions,
152+
153+
-- Resource-specific size in KB
154+
INT64(summary.byteshtml) / 1024 AS html_kb,
155+
INT64(summary.bytesjs) / 1024 AS js_kb,
156+
INT64(summary.bytescss) / 1024 AS css_kb,
157+
INT64(summary.bytesimg) / 1024 AS img_kb,
158+
INT64(summary.bytesfont) / 1024 AS font_kb
159+
FROM
160+
`httparchive.crawl.pages`,
161+
UNNEST(technologies) AS tech
162+
WHERE
163+
date = '2025-07-01' AND
164+
is_root_page = TRUE AND
165+
'CMS' IN UNNEST(tech.categories)
130166
)
131167

132168
SELECT
133-
client,
134-
cms,
135-
COUNT(0) AS pages,
136-
-- Median resource weights and emissions
137-
APPROX_QUANTILES(total_kb, 1000)[OFFSET(500)] AS median_total_kb,
138-
APPROX_QUANTILES(total_operational_emissions, 1000)[OFFSET(500)] AS median_operational_emissions,
139-
APPROX_QUANTILES(total_embodied_emissions, 1000)[OFFSET(500)] AS median_embodied_emissions,
140-
APPROX_QUANTILES(total_emissions, 1000)[OFFSET(500)] AS median_total_emissions,
141-
142-
-- Resource-specific medians
143-
APPROX_QUANTILES(html_kb, 1000)[OFFSET(500)] AS median_html_kb,
144-
APPROX_QUANTILES(total_html_emissions, 1000)[OFFSET(500)] AS median_total_html_emissions,
145-
APPROX_QUANTILES(js_kb, 1000)[OFFSET(500)] AS median_js_kb,
146-
APPROX_QUANTILES(total_js_emissions, 1000)[OFFSET(500)] AS median_total_js_emissions,
147-
APPROX_QUANTILES(css_kb, 1000)[OFFSET(500)] AS median_css_kb,
148-
APPROX_QUANTILES(total_css_emissions, 1000)[OFFSET(500)] AS median_total_css_emissions,
149-
APPROX_QUANTILES(img_kb, 1000)[OFFSET(500)] AS median_img_kb,
150-
APPROX_QUANTILES(total_img_emissions, 1000)[OFFSET(500)] AS median_total_img_emissions,
151-
APPROX_QUANTILES(font_kb, 1000)[OFFSET(500)] AS median_font_kb,
152-
APPROX_QUANTILES(total_font_emissions, 1000)[OFFSET(500)] AS median_total_font_emissions
169+
client,
170+
cms,
171+
COUNT(*) AS pages,
172+
-- Median resource weights and emissions
173+
APPROX_QUANTILES(total_kb, 1000) [OFFSET(500)] AS median_total_kb,
174+
APPROX_QUANTILES(
175+
total_operational_emissions, 1000
176+
) [OFFSET(500)] AS median_operational_emissions,
177+
APPROX_QUANTILES(
178+
total_embodied_emissions, 1000
179+
) [OFFSET(500)] AS median_embodied_emissions,
180+
APPROX_QUANTILES(
181+
total_emissions, 1000
182+
) [OFFSET(500)] AS median_total_emissions,
183+
184+
-- Resource-specific medians
185+
APPROX_QUANTILES(html_kb, 1000) [OFFSET(500)] AS median_html_kb,
186+
APPROX_QUANTILES(
187+
total_html_emissions, 1000
188+
) [OFFSET(500)] AS median_total_html_emissions,
189+
APPROX_QUANTILES(js_kb, 1000) [OFFSET(500)] AS median_js_kb,
190+
APPROX_QUANTILES(
191+
total_js_emissions, 1000
192+
) [OFFSET(500)] AS median_total_js_emissions,
193+
APPROX_QUANTILES(css_kb, 1000) [OFFSET(500)] AS median_css_kb,
194+
APPROX_QUANTILES(
195+
total_css_emissions, 1000
196+
) [OFFSET(500)] AS median_total_css_emissions,
197+
APPROX_QUANTILES(img_kb, 1000) [OFFSET(500)] AS median_img_kb,
198+
APPROX_QUANTILES(
199+
total_img_emissions, 1000
200+
) [OFFSET(500)] AS median_total_img_emissions,
201+
APPROX_QUANTILES(font_kb, 1000) [OFFSET(500)] AS median_font_kb,
202+
APPROX_QUANTILES(
203+
total_font_emissions, 1000
204+
) [OFFSET(500)] AS median_total_font_emissions
153205
FROM
154-
cms_data
206+
cms_data
155207
GROUP BY
156-
client,
157-
cms
208+
client,
209+
cms
158210
ORDER BY
159-
pages DESC,
160-
cms,
161-
client;
211+
pages DESC,
212+
cms ASC,
213+
client ASC;

0 commit comments

Comments
 (0)