@@ -188,17 +188,17 @@ geo_summary AS (
188188 device IN ('desktop', 'phone')
189189),
190190
191- crux AS (
191+ base_crux AS (
192192 SELECT
193193 geo,
194- CASE _rank
195- WHEN 100000000 THEN ' ALL'
196- WHEN 10000000 THEN 'Top 10M'
197- WHEN 1000000 THEN 'Top 1M'
198- WHEN 100000 THEN 'Top 100k'
199- WHEN 10000 THEN 'Top 10k'
200- WHEN 1000 THEN 'Top 1k'
201- END AS rank ,
194+ CASE
195+ WHEN rank <= 1000 THEN ['Top 1k', 'Top 10k', 'Top 100k', 'Top 1M', 'Top 10M', ' ALL']
196+ WHEN rank <= 10000 THEN [ 'Top 10k', 'Top 100k', 'Top 1M', 'Top 10M', 'ALL']
197+ WHEN rank <= 100000 THEN [ 'Top 100k', 'Top 1M', 'Top 10M', 'ALL']
198+ WHEN rank <= 1000000 THEN [ 'Top 1M', 'Top 10M', 'ALL']
199+ WHEN rank <= 10000000 THEN [ 'Top 10M', 'ALL']
200+ ELSE ['Unknown']
201+ END AS eligible_ranks ,
202202 CONCAT(origin, '/') AS root_page,
203203 IF(device = 'desktop', 'desktop', 'mobile') AS client,
204204
@@ -225,9 +225,32 @@ crux AS (
225225 IS_GOOD(fast_ttfb, avg_ttfb, slow_ttfb) AS good_ttfb,
226226 IS_NON_ZERO(fast_inp, avg_inp, slow_inp) AS any_inp,
227227 IS_GOOD(fast_inp, avg_inp, slow_inp) AS good_inp
228- FROM geo_summary,
229- UNNEST([1000, 10000, 100000, 1000000, 10000000, 100000000]) AS _rank
230- WHERE rank <= _rank
228+ FROM geo_summary
229+ ),
230+
231+ crux AS (
232+ SELECT
233+ geo,
234+ rank,
235+ root_page,
236+ client,
237+
238+ any_fid,
239+ good_fid,
240+ any_cls,
241+ good_cls,
242+ any_lcp,
243+ good_lcp,
244+ good_cwv,
245+
246+ any_fcp,
247+ good_fcp,
248+ any_ttfb,
249+ good_ttfb,
250+ any_inp,
251+ good_inp
252+ FROM base_crux,
253+ UNNEST(eligible_ranks) AS rank
231254),
232255
233256technologies AS (
@@ -289,93 +312,40 @@ lab_data AS (
289312),
290313
291314audits AS (
292- SELECT DISTINCT
315+ SELECT
316+ geo,
293317 client,
294- root_page ,
318+ rank ,
295319 technology,
296320 version,
297- audit_category,
298- audit_id
321+ category,
322+ id,
323+ COUNT(DISTINCT root_page) AS origins
299324 FROM (
300325 SELECT DISTINCT
301326 client,
302327 page,
303328 root_page,
304- audits.category AS audit_category ,
305- audits.id AS audit_id
329+ audits.category,
330+ audits.id
306331 FROM pages
307332 INNER JOIN UNNEST(get_passed_audits(pages.lighthouse)) AS audits
308333 ) AS audits_data
309334 INNER JOIN technologies
310335 USING (client, page)
311- ),
312-
313- origins_summary AS (
314- SELECT
315- geo,
316- client,
317- rank,
318- technology,
319- version,
320- COUNT(DISTINCT root_page) AS origins
321- FROM lab_data
322336 INNER JOIN crux
323337 USING (client, root_page)
324338 GROUP BY
325- geo,
326- client,
327- rank,
328- technology,
329- version
330-
331- ),
332-
333-
334- audits_summary AS (
335- SELECT
336339 geo,
337340 client,
338341 rank,
339342 technology,
340343 version,
341- ARRAY_AGG(STRUCT(
342- audit_category AS category,
343- audit_id AS id,
344- SAFE_DIVIDE(audits.origins, origins_summary.origins) AS pass_rate
345- )) AS audits
346- FROM (
347- SELECT
348- geo,
349- client,
350- rank,
351- technology,
352- version,
353- audit_category,
354- audit_id,
355- COUNT(DISTINCT root_page) AS origins
356- FROM audits
357- INNER JOIN crux
358- USING (client, root_page)
359- GROUP BY
360- geo,
361- client,
362- rank,
363- technology,
364- version,
365- audit_category,
366- audit_id
367- ) AS audits
368- LEFT JOIN origins_summary
369- USING (geo, client, rank, technology, version)
370- GROUP BY
371- geo,
372- client,
373- rank,
374- technology,
375- version
344+ category,
345+ id
376346),
377347
378- other_summary AS (
348+ base_summary AS (
379349 SELECT
380350 geo,
381351 client,
@@ -412,8 +382,9 @@ other_summary AS (
412382 SAFE_CAST(APPROX_QUANTILES(bytesTotal, 1000)[OFFSET(500)] AS INT64) AS total,
413383 SAFE_CAST(APPROX_QUANTILES(bytesJS, 1000)[OFFSET(500)] AS INT64) AS js,
414384 SAFE_CAST(APPROX_QUANTILES(bytesImg, 1000)[OFFSET(500)] AS INT64) AS images
415- ) AS median_page_weight_bytes
385+ ) AS median_page_weight_bytes,
416386
387+ COUNT(DISTINCT root_page) AS origins
417388 FROM lab_data
418389 INNER JOIN crux
419390 USING (client, root_page)
@@ -423,6 +394,29 @@ other_summary AS (
423394 rank,
424395 technology,
425396 version
397+ ),
398+
399+ audits_summary AS (
400+ SELECT
401+ geo,
402+ client,
403+ rank,
404+ technology,
405+ version,
406+ ARRAY_AGG(STRUCT(
407+ category AS category,
408+ id AS id,
409+ SAFE_DIVIDE(audits.origins, base_summary.origins) AS pass_rate
410+ )) AS audits
411+ FROM audits
412+ LEFT JOIN base_summary
413+ USING (geo, client, rank, technology, version)
414+ GROUP BY
415+ geo,
416+ client,
417+ rank,
418+ technology,
419+ version
426420)
427421
428422SELECT
@@ -433,15 +427,12 @@ SELECT
433427 technology,
434428 version,
435429
436- # Metrics
437430 origins,
438431 crux,
439432 median_lighthouse_score,
440433 median_page_weight_bytes,
441434 audits
442- FROM origins_summary
443- LEFT JOIN other_summary
444- USING (geo, client, rank, technology, version)
435+ FROM base_summary
445436LEFT JOIN audits_summary
446437USING (geo, client, rank, technology, version)
447438` )
0 commit comments