我试图了解 UNNEST 运算符如何在存储CRUX 数据(Chrome UX 报告)的 Google 的公共数据库上工作。
在此页面上提供了一些示例。
我可以理解以下内容:
- 所有密度的总和为 1(或 100%)
- 密度分为三种类型(手机、平板电脑、台式机)
- bin start 和 end 在使用时对数据进行切片
本文提供了一些使用 UNNEST 运算符的示例,该运算符扩展了最里面的数组,从而也可以进行分组操作。
所以像下面这样的查询
SELECT
SUM(fcp.density) AS fast_fcp
FROM
`chrome-ux-report.all.201809`,
UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
origin = 'https://developers.google.com'
返回所有 FCP 密度的总和,值为 0.999999。
我本来希望第二个 SUM 在第二个 UNNESTED 运算符上的工作类似;但是,当我使用两个字段并进行求和时,会发生一些奇怪的事情。
例如以下
SELECT
SUM(fcp.density) AS fast_fcp,
SUM(lcp.density) AS fast_lcp
FROM
`chrome-ux-report.all.201809`,
UNNEST(first_contentful_paint.histogram.bin) AS fcp
UNNEST(largest_contentful_paint.histogram.bin) AS lcp
WHERE
origin = 'https://developers.google.com'
产生类似的东西
Row f0_ f1_
1 393.12850000000896 352.06599999922156
奇怪的是,如果不使用聚合,unnest 运算符会按预期工作,并且列会按预期在列中展开。
有人可以帮助我了解门后发生的事情以及如何获得一系列领域的总和。
例如
Site;fcp;cls;fid
https://developers.google.com;0.4;0.2;0.1
https://www.google.com;0.1;0.4;0.3
最终目标将是选择一个起始值的底层括号来找出“好”的网站,但我需要先确定为什么上述方法不起作用。