Hi Ryan,
Here's an example of querying LCP before and after 201909:
SELECT
_TABLE_SUFFIX AS month,
SUM(IF(lcp.start < 2500, lcp.density, 0)) AS good_lcp
FROM
`chrome-ux-report.all.2019*`,
UNNEST(largest_contentful_paint.histogram.bin) AS lcp
WHERE
GROUP BY
month
ORDER BY
month
Prior to 201909, the LCP metric didn't exist at all in the schema (not even as a string) so this query only returns results for months 09 through 12.
The experimental.global table is equivalent to every all.YYYYMM table combined, and the schema for this table uses NULL values as placeholders when LCP data wasn't yet available. Here's an example of querying this table:
SELECT
yyyymm,
SUM(IF(lcp.start < 2500, lcp.density, 0)) AS good_lcp
FROM
`chrome-ux-report.experimental.global`,
UNNEST(largest_contentful_paint.histogram.bin) AS lcp
WHERE
yyyymm BETWEEN 201901 AND 201912
GROUP BY
yyyymm
ORDER BY
yyyymm
It's very similar except for the addition of the yyyymm field, and returns similar results for data between September and December.
Finally, if you're only looking to aggregate high-level stats about a metric like the percent of good experiences (as these examples are), then I'd recommend using the materialized.metrics_summary table or device_summary/country_summary if you need to segment by device or country. For example:
SELECT
yyyymm,
fast_lcp AS good_lcp
FROM
`chrome-ux-report.materialized.metrics_summary`
WHERE
date BETWEEN '2019-01-01' AND '2019-12-01'
ORDER BY
yyyymm
These summary tables contain pre-aggregated fast/slow values for each metric, or NULL if there is no data. So in this case we get NULL until September. Being pre-aggregated means that your queries are simpler and much faster/cheaper to run.
Hope that clarifies how to use the CrUX tables to query data before and after metrics are added. If not, let me know if you're trying to query a specific country table whose schema doesn't match that of the global tables and please share the query/table that you're having issues with.
Thanks,
Rick