BigQuery 标准 SQL 中的分位数函数

Posted

技术标签:

【中文标题】BigQuery 标准 SQL 中的分位数函数【英文标题】:Quantiles function in BigQuery Standard SQL 【发布时间】:2017-05-10 13:43:29 【问题描述】:

BigQuery with Legacy SQL 有一个非常方便的 QUANTILES 函数,可以快速获取表中值的直方图,而无需手动指定存储桶。

我在Standard SQL 中找不到很好的聚合函数等效项。我是否遗漏了一些明显的东西,或者其他的,模仿它的标准方法是什么?

【问题讨论】:

【参考方案1】:

您正在寻找 APPROX_QUANTILES function :) 文档中的示例之一是:

#standardSQL
SELECT APPROX_QUANTILES(x, 2) AS approx_quantiles
FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x;

+------------------+
| approx_quantiles |
+------------------+
| [1, 5, 10]       |
+------------------+

注意它返回一个数组,但如果你想把数组的元素作为单独的行,你可以取消嵌套结果:

#standardSQL
SELECT
  quant, offset
FROM UNNEST((
  SELECT APPROX_QUANTILES(x, 2) AS quants
  FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x
)) AS quant WITH OFFSET
ORDER BY offset;

【讨论】:

以上是关于BigQuery 标准 SQL 中的分位数函数的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用quantile函数计算评分值的分位数(20%40%60%80%)使用逻辑操作符将对应的分位区间(quantile)编码为分类值生成新的字段strsplit函数将学生的名和姓拆分

薪酬中的分位值是啥意思

标准 sql 中的 bigquery 旧版 sql POSITION() 函数

BigQuery 标准 SQL 中的“yearweek”函数的等价物是啥?

BigQuery:标准 SQL 中的 PI()

BigQuery 标准 SQL 中的 JSON_EXTRACT?