From e3bcc717fbf2094923102ea65d6139be27935792 Mon Sep 17 00:00:00 2001 From: Joe McGill Date: Fri, 29 Mar 2024 14:53:02 -0500 Subject: [PATCH 01/11] Update inaccurate sizes query for 2024 This is an update to the previous query created in 2022 to evaluate the impact of inaccurate image sizes attributes on WordPress sites using HTTPArchive data. The main changes from the original query are: - Updates the query to use the new `httparchive.all.pages` table. - Reports percentages at every 10th percentile rather than only 10, 25, 50, 75, and 90. See: https://github.com/GoogleChromeLabs/wpp-research/blob/main/sql/2022/12/inaccurate-sizes-attribute-impact.sql --- .../04/inaccurate-sizes-attribute-impact.sql | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 sql/2024/04/inaccurate-sizes-attribute-impact.sql diff --git a/sql/2024/04/inaccurate-sizes-attribute-impact.sql b/sql/2024/04/inaccurate-sizes-attribute-impact.sql new file mode 100644 index 0000000..08940bf --- /dev/null +++ b/sql/2024/04/inaccurate-sizes-attribute-impact.sql @@ -0,0 +1,106 @@ +# HTTP Archive query to measure impact of inaccurate sizes attributes per for WordPress sites. +# +# WPP Research, Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +CREATE TEMPORARY FUNCTION + getSrcsetSizesAccuracy(payload STRING) + RETURNS ARRAY> + LANGUAGE js AS ''' +try { + var $ = JSON.parse(payload); + var responsiveImages = JSON.parse($._responsive_images); + responsiveImages = responsiveImages['responsive-images']; + return responsiveImages.map(({ + sizesAbsoluteError, + sizesRelativeError, + wDescriptorAbsoluteError, + wDescriptorRelativeError, + idealSizesSelectedResourceEstimatedPixels, + actualSizesEstimatedWastedLoadedPixels, + actualSizesEstimatedWastedLoadedBytes + }) => { + let wastedLoadedPercent; + if ( idealSizesSelectedResourceEstimatedPixels > 0 ) { + wastedLoadedPercent = actualSizesEstimatedWastedLoadedPixels / idealSizesSelectedResourceEstimatedPixels; + } else { + wastedLoadedPercent = null; + } + return { + sizesAbsoluteError, + sizesRelativeError, + wDescriptorAbsoluteError, + wDescriptorRelativeError, + actualSizesEstimatedWastedLoadedPixels, + actualSizesEstimatedWastedLoadedBytes, + wastedLoadedPercent + }; + } +); +} catch (e) { + return []; +} +'''; + +CREATE TEMPORARY FUNCTION IS_CMS(technologies ARRAY, info ARRAY>>, cms STRING, version STRING) RETURNS BOOL AS ( + EXISTS( + SELECT * FROM UNNEST(technologies) AS technology, UNNEST(technology.info) AS info + WHERE technology.technology = cms + AND ( + version = "" + OR ENDS_WITH(version, ".x") AND (STARTS_WITH(info, RTRIM(version, "x")) OR info = RTRIM(version, ".x")) + OR info = version + ) + ) +); + +WITH wordpressSizesData AS ( + SELECT + client, + image + FROM + `httparchive.all.pages`, + UNNEST(getSrcsetSizesAccuracy(payload)) AS image + WHERE + date = '2024-02-01' + AND IS_CMS(technologies, 'WordPress', '') + AND is_root_page = TRUE +) + +SELECT + percentile, + client, + APPROX_QUANTILES(image.sizesAbsoluteError, 100)[OFFSET(percentile)] AS sizesAbsoluteError, + APPROX_QUANTILES(image.sizesRelativeError, 100)[OFFSET(percentile)] AS sizesRelativeError, + APPROX_QUANTILES(image.wDescriptorAbsoluteError, 100)[OFFSET(percentile)] AS wDescriptorAbsoluteError, + APPROX_QUANTILES(image.wDescriptorRelativeError, 100)[OFFSET(percentile)] AS wDescriptorRelativeError, + APPROX_QUANTILES(image.actualSizesEstimatedWastedLoadedPixels, 100)[OFFSET(percentile)] AS actualSizesEstimatedWastedLoadedPixels, + APPROX_QUANTILES(image.actualSizesEstimatedWastedLoadedBytes, 100)[OFFSET(percentile)] AS actualSizesEstimatedWastedLoadedBytes, + APPROX_QUANTILES(image.wastedLoadedPercent, 100)[OFFSET(percentile)] AS wastedLoadedPercent +FROM + wordpressSizesData, + UNNEST([10, 20, 30, 40, 50, 60, 70, 80, 90]) AS percentile +GROUP BY + percentile, + client +ORDER BY + percentile, + client From 932f5f1b4cc0255fb0ab44003f7c632941c8b4d8 Mon Sep 17 00:00:00 2001 From: Joe McGill Date: Mon, 1 Apr 2024 20:35:53 -0500 Subject: [PATCH 02/11] Update query to use custom_metrics and only used data --- .../04/inaccurate-sizes-attribute-impact.sql | 52 +++++++------------ 1 file changed, 18 insertions(+), 34 deletions(-) diff --git a/sql/2024/04/inaccurate-sizes-attribute-impact.sql b/sql/2024/04/inaccurate-sizes-attribute-impact.sql index 08940bf..111bb2a 100644 --- a/sql/2024/04/inaccurate-sizes-attribute-impact.sql +++ b/sql/2024/04/inaccurate-sizes-attribute-impact.sql @@ -16,42 +16,27 @@ CREATE TEMPORARY FUNCTION - getSrcsetSizesAccuracy(payload STRING) + getImgSizesAccuracy(custom_metrics STRING) RETURNS ARRAY> + idealSizesSelectedResourceEstimatedBytes FLOAT64, + actualSizesEstimatedWastedLoadedBytes FLOAT64>> LANGUAGE js AS ''' try { - var $ = JSON.parse(payload); - var responsiveImages = JSON.parse($._responsive_images); + const $ = JSON.parse(custom_metrics); + let responsiveImages = JSON.parse($.responsive_images); responsiveImages = responsiveImages['responsive-images']; - return responsiveImages.map(({ - sizesAbsoluteError, - sizesRelativeError, - wDescriptorAbsoluteError, - wDescriptorRelativeError, - idealSizesSelectedResourceEstimatedPixels, - actualSizesEstimatedWastedLoadedPixels, - actualSizesEstimatedWastedLoadedBytes - }) => { - let wastedLoadedPercent; - if ( idealSizesSelectedResourceEstimatedPixels > 0 ) { - wastedLoadedPercent = actualSizesEstimatedWastedLoadedPixels / idealSizesSelectedResourceEstimatedPixels; - } else { - wastedLoadedPercent = null; - } + + return responsiveImages.map((imgData) => { return { - sizesAbsoluteError, - sizesRelativeError, - wDescriptorAbsoluteError, - wDescriptorRelativeError, - actualSizesEstimatedWastedLoadedPixels, - actualSizesEstimatedWastedLoadedBytes, - wastedLoadedPercent + imgData.sizesAbsoluteError, + imgData.sizesRelativeError, + imgData.idealSizesSelectedResourceEstimatedPixels + imgData.actualSizesEstimatedWastedLoadedPixels, + imgData.idealSizesSelectedResourceEstimatedBytes + imgData.actualSizesEstimatedWastedLoadedBytes, }; } ); @@ -78,9 +63,9 @@ WITH wordpressSizesData AS ( image FROM `httparchive.all.pages`, - UNNEST(getSrcsetSizesAccuracy(payload)) AS image + UNNEST(getImgSizesAccuracy(custom_metrics)) AS image WHERE - date = '2024-02-01' + date = '2024-03-01' AND IS_CMS(technologies, 'WordPress', '') AND is_root_page = TRUE ) @@ -90,11 +75,10 @@ SELECT client, APPROX_QUANTILES(image.sizesAbsoluteError, 100)[OFFSET(percentile)] AS sizesAbsoluteError, APPROX_QUANTILES(image.sizesRelativeError, 100)[OFFSET(percentile)] AS sizesRelativeError, - APPROX_QUANTILES(image.wDescriptorAbsoluteError, 100)[OFFSET(percentile)] AS wDescriptorAbsoluteError, - APPROX_QUANTILES(image.wDescriptorRelativeError, 100)[OFFSET(percentile)] AS wDescriptorRelativeError, + APPROX_QUANTILES(image.idealSizesSelectedResourceEstimatedPixels, 100)[OFFSET(percentile)] AS idealSizesSelectedResourceEstimatedPixels, APPROX_QUANTILES(image.actualSizesEstimatedWastedLoadedPixels, 100)[OFFSET(percentile)] AS actualSizesEstimatedWastedLoadedPixels, + APPROX_QUANTILES(image.idealSizesSelectedResourceEstimatedBytes, 100)[OFFSET(percentile)] AS idealSizesSelectedResourceEstimatedBytes, APPROX_QUANTILES(image.actualSizesEstimatedWastedLoadedBytes, 100)[OFFSET(percentile)] AS actualSizesEstimatedWastedLoadedBytes, - APPROX_QUANTILES(image.wastedLoadedPercent, 100)[OFFSET(percentile)] AS wastedLoadedPercent FROM wordpressSizesData, UNNEST([10, 20, 30, 40, 50, 60, 70, 80, 90]) AS percentile From 7f0b1135a858119d90389c4bf1f10aecd0b1af4d Mon Sep 17 00:00:00 2001 From: Joe McGill Date: Wed, 10 Apr 2024 12:48:41 -0500 Subject: [PATCH 03/11] Update query to use SQL instead of JS --- .../04/inaccurate-sizes-attribute-impact.sql | 41 ++++++++----------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/sql/2024/04/inaccurate-sizes-attribute-impact.sql b/sql/2024/04/inaccurate-sizes-attribute-impact.sql index 111bb2a..cfea910 100644 --- a/sql/2024/04/inaccurate-sizes-attribute-impact.sql +++ b/sql/2024/04/inaccurate-sizes-attribute-impact.sql @@ -1,6 +1,6 @@ # HTTP Archive query to measure impact of inaccurate sizes attributes per for WordPress sites. # -# WPP Research, Copyright 2022 Google LLC +# WPP Research, Copyright 2024 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,35 +15,26 @@ # limitations under the License. -CREATE TEMPORARY FUNCTION - getImgSizesAccuracy(custom_metrics STRING) - RETURNS ARRAY> - LANGUAGE js AS ''' -try { - const $ = JSON.parse(custom_metrics); - let responsiveImages = JSON.parse($.responsive_images); - responsiveImages = responsiveImages['responsive-images']; - - return responsiveImages.map((imgData) => { - return { - imgData.sizesAbsoluteError, - imgData.sizesRelativeError, - imgData.idealSizesSelectedResourceEstimatedPixels - imgData.actualSizesEstimatedWastedLoadedPixels, - imgData.idealSizesSelectedResourceEstimatedBytes - imgData.actualSizesEstimatedWastedLoadedBytes, - }; - } +AS ( + ARRAY( + SELECT AS STRUCT + CAST(JSON_EXTRACT_SCALAR(image, '$.sizesAbsoluteError') AS INT64) AS sizesAbsoluteError, + CAST(JSON_EXTRACT_SCALAR(image, '$.sizesRelativeError') AS FLOAT64) AS sizesRelativeError, + CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedPixels') AS INT64) AS idealSizesSelectedResourceEstimatedPixels, + CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedPixels') AS INT64) AS actualSizesEstimatedWastedLoadedPixels, + CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedBytes') AS FLOAT64) AS idealSizesSelectedResourceEstimatedBytes, + CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedBytes') AS FLOAT64) AS actualSizesEstimatedWastedLoadedBytes, + FROM + UNNEST(JSON_EXTRACT_ARRAY(custom_metrics, '$.responsive_images.responsive-images')) AS image + ) ); -} catch (e) { - return []; -} -'''; CREATE TEMPORARY FUNCTION IS_CMS(technologies ARRAY, info ARRAY>>, cms STRING, version STRING) RETURNS BOOL AS ( EXISTS( @@ -63,7 +54,7 @@ WITH wordpressSizesData AS ( image FROM `httparchive.all.pages`, - UNNEST(getImgSizesAccuracy(custom_metrics)) AS image + UNNEST(GET_IMG_SIZES_ACCURACY(custom_metrics)) AS image WHERE date = '2024-03-01' AND IS_CMS(technologies, 'WordPress', '') From 87964b0123bdf8dbfd006288937a13bfae8aae3a Mon Sep 17 00:00:00 2001 From: Joe McGill Date: Wed, 10 Apr 2024 13:00:25 -0500 Subject: [PATCH 04/11] Add hasSrcset and hasSizes values --- sql/2024/04/inaccurate-sizes-attribute-impact.sql | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sql/2024/04/inaccurate-sizes-attribute-impact.sql b/sql/2024/04/inaccurate-sizes-attribute-impact.sql index cfea910..ca9001c 100644 --- a/sql/2024/04/inaccurate-sizes-attribute-impact.sql +++ b/sql/2024/04/inaccurate-sizes-attribute-impact.sql @@ -16,7 +16,9 @@ CREATE TEMPORARY FUNCTION GET_IMG_SIZES_ACCURACY(custom_metrics STRING) RETURNS - ARRAY Date: Wed, 10 Apr 2024 13:48:06 -0500 Subject: [PATCH 05/11] Try adding relative wasted values to GET_IMG_SIZES_ACCURACY --- sql/2024/04/inaccurate-sizes-attribute-impact.sql | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sql/2024/04/inaccurate-sizes-attribute-impact.sql b/sql/2024/04/inaccurate-sizes-attribute-impact.sql index ca9001c..a80af3f 100644 --- a/sql/2024/04/inaccurate-sizes-attribute-impact.sql +++ b/sql/2024/04/inaccurate-sizes-attribute-impact.sql @@ -22,8 +22,10 @@ CREATE TEMPORARY FUNCTION GET_IMG_SIZES_ACCURACY(custom_metrics STRING) RETURNS sizesRelativeError FLOAT64, idealSizesSelectedResourceEstimatedPixels INT64, actualSizesEstimatedWastedLoadedPixels INT64, + relativeSizesEstimatedWastedLoadedPixels FLOAT64, idealSizesSelectedResourceEstimatedBytes FLOAT64, - actualSizesEstimatedWastedLoadedBytes FLOAT64>> + actualSizesEstimatedWastedLoadedBytes FLOAT64, + relativeSizesEstimatedWastedLoadedBytes FLOAT64>> AS ( ARRAY( SELECT AS STRUCT @@ -33,8 +35,16 @@ AS ( CAST(JSON_EXTRACT_SCALAR(image, '$.sizesRelativeError') AS FLOAT64) AS sizesRelativeError, CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedPixels') AS INT64) AS idealSizesSelectedResourceEstimatedPixels, CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedPixels') AS INT64) AS actualSizesEstimatedWastedLoadedPixels, + SAFE_DIVIDE( + CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedPixels') AS INT64), + CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedPixels') AS INT64) + ) AS relativeSizesEstimatedWastedLoadedPixels, CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedBytes') AS FLOAT64) AS idealSizesSelectedResourceEstimatedBytes, CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedBytes') AS FLOAT64) AS actualSizesEstimatedWastedLoadedBytes, + SAFE_DIVIDE( + CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedBytes') AS FLOAT64), + CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedBytes') AS FLOAT64) + ) AS relativeSizesEstimatedWastedLoadedBytes, FROM UNNEST(JSON_EXTRACT_ARRAY(custom_metrics, '$.responsive_images.responsive-images')) AS image ) @@ -74,8 +84,10 @@ SELECT APPROX_QUANTILES(image.sizesRelativeError, 100)[OFFSET(percentile)] AS sizesRelativeError, APPROX_QUANTILES(image.idealSizesSelectedResourceEstimatedPixels, 100)[OFFSET(percentile)] AS idealSizesSelectedResourceEstimatedPixels, APPROX_QUANTILES(image.actualSizesEstimatedWastedLoadedPixels, 100)[OFFSET(percentile)] AS actualSizesEstimatedWastedLoadedPixels, + APPROX_QUANTILES(image.relativeSizesEstimatedWastedLoadedPixels, 100)[OFFSET(percentile)] AS relativeSizesEstimatedWastedLoadedPixels, APPROX_QUANTILES(image.idealSizesSelectedResourceEstimatedBytes, 100)[OFFSET(percentile)] AS idealSizesSelectedResourceEstimatedBytes, APPROX_QUANTILES(image.actualSizesEstimatedWastedLoadedBytes, 100)[OFFSET(percentile)] AS actualSizesEstimatedWastedLoadedBytes, + APPROX_QUANTILES(image.relativeSizesEstimatedWastedLoadedBytes, 100)[OFFSET(percentile)] AS relativeSizesEstimatedWastedLoadedBytes, FROM wordpressSizesData, UNNEST([10, 20, 30, 40, 50, 60, 70, 80, 90]) AS percentile From 1971cbc82f5c8a70e93988ce8325e135d09934d8 Mon Sep 17 00:00:00 2001 From: Joe McGill Date: Wed, 10 Apr 2024 14:00:41 -0500 Subject: [PATCH 06/11] Add var for date to query --- sql/2024/04/inaccurate-sizes-attribute-impact.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/2024/04/inaccurate-sizes-attribute-impact.sql b/sql/2024/04/inaccurate-sizes-attribute-impact.sql index a80af3f..7563793 100644 --- a/sql/2024/04/inaccurate-sizes-attribute-impact.sql +++ b/sql/2024/04/inaccurate-sizes-attribute-impact.sql @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +DECLARE DATE_TO_QUERY DATE DEFAULT '2024-03-01'; CREATE TEMPORARY FUNCTION GET_IMG_SIZES_ACCURACY(custom_metrics STRING) RETURNS ARRAY Date: Wed, 10 Apr 2024 17:09:03 -0500 Subject: [PATCH 07/11] Reverse relative waste calculation Co-authored-by: Felix Arntz --- sql/2024/04/inaccurate-sizes-attribute-impact.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sql/2024/04/inaccurate-sizes-attribute-impact.sql b/sql/2024/04/inaccurate-sizes-attribute-impact.sql index 7563793..d419d12 100644 --- a/sql/2024/04/inaccurate-sizes-attribute-impact.sql +++ b/sql/2024/04/inaccurate-sizes-attribute-impact.sql @@ -37,14 +37,14 @@ AS ( CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedPixels') AS INT64) AS idealSizesSelectedResourceEstimatedPixels, CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedPixels') AS INT64) AS actualSizesEstimatedWastedLoadedPixels, SAFE_DIVIDE( - CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedPixels') AS INT64), - CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedPixels') AS INT64) + CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedPixels') AS INT64), + CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedPixels') AS INT64) ) AS relativeSizesEstimatedWastedLoadedPixels, CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedBytes') AS FLOAT64) AS idealSizesSelectedResourceEstimatedBytes, CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedBytes') AS FLOAT64) AS actualSizesEstimatedWastedLoadedBytes, SAFE_DIVIDE( - CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedBytes') AS FLOAT64), - CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedBytes') AS FLOAT64) + CAST(JSON_EXTRACT_SCALAR(image, '$.actualSizesEstimatedWastedLoadedBytes') AS FLOAT64), + CAST(JSON_EXTRACT_SCALAR(image, '$.idealSizesSelectedResourceEstimatedBytes') AS FLOAT64) ) AS relativeSizesEstimatedWastedLoadedBytes, FROM UNNEST(JSON_EXTRACT_ARRAY(custom_metrics, '$.responsive_images.responsive-images')) AS image From d252916b7f1d2d6b368a0e2f1687d3b51e62a4c7 Mon Sep 17 00:00:00 2001 From: Joe McGill <801097+joemcgill@users.noreply.github.com> Date: Thu, 11 Apr 2024 16:02:01 -0500 Subject: [PATCH 08/11] Update sizesAbsoluteError to FLOAT64 Values can occasionally be a decimal Co-authored-by: Felix Arntz --- sql/2024/04/inaccurate-sizes-attribute-impact.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/2024/04/inaccurate-sizes-attribute-impact.sql b/sql/2024/04/inaccurate-sizes-attribute-impact.sql index d419d12..9db3eef 100644 --- a/sql/2024/04/inaccurate-sizes-attribute-impact.sql +++ b/sql/2024/04/inaccurate-sizes-attribute-impact.sql @@ -19,7 +19,7 @@ DECLARE DATE_TO_QUERY DATE DEFAULT '2024-03-01'; CREATE TEMPORARY FUNCTION GET_IMG_SIZES_ACCURACY(custom_metrics STRING) RETURNS ARRAY Date: Thu, 11 Apr 2024 16:02:28 -0500 Subject: [PATCH 09/11] Add PR reference Co-authored-by: Felix Arntz --- sql/2024/04/inaccurate-sizes-attribute-impact.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/2024/04/inaccurate-sizes-attribute-impact.sql b/sql/2024/04/inaccurate-sizes-attribute-impact.sql index 9db3eef..09a4c28 100644 --- a/sql/2024/04/inaccurate-sizes-attribute-impact.sql +++ b/sql/2024/04/inaccurate-sizes-attribute-impact.sql @@ -13,6 +13,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +# +# See https://github.com/GoogleChromeLabs/wpp-research/pull/108 DECLARE DATE_TO_QUERY DATE DEFAULT '2024-03-01'; From 57796c390301175ae89d6994cb7c1519412e9243 Mon Sep 17 00:00:00 2001 From: Joe McGill <801097+joemcgill@users.noreply.github.com> Date: Thu, 11 Apr 2024 16:04:24 -0500 Subject: [PATCH 10/11] Change the order of ORDER BY clauses --- sql/2024/04/inaccurate-sizes-attribute-impact.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/2024/04/inaccurate-sizes-attribute-impact.sql b/sql/2024/04/inaccurate-sizes-attribute-impact.sql index 09a4c28..f68c880 100644 --- a/sql/2024/04/inaccurate-sizes-attribute-impact.sql +++ b/sql/2024/04/inaccurate-sizes-attribute-impact.sql @@ -98,5 +98,5 @@ GROUP BY percentile, client ORDER BY - percentile, - client + client, + percentile From dcde85483cc9639201c0a82503823e5aa5df707e Mon Sep 17 00:00:00 2001 From: Joe McGill Date: Thu, 11 Apr 2024 16:08:08 -0500 Subject: [PATCH 11/11] Update changelog --- sql/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sql/README.md b/sql/README.md index a45bfe9..ebd9ac7 100644 --- a/sql/README.md +++ b/sql/README.md @@ -20,6 +20,9 @@ For additional considerations for writing BigQuery queries against HTTP Archive, ## Query index +### 2024/04 +* [Impact of inaccurate sizes attributes in WordPress](./2024/04/inaccurate-sizes-attribute-impact.sql) + ### 2024/01 * [TTFB of localized WordPress sites](./2024/01/ttfb-localized-sites.sql)