BigQuery:QUANTILES的GROUP BY子句

msr*_*vas 9 google-bigquery

根据bigquery查询引用,目前Quantiles不允许通过另一列进行任何类型的分组.我主要感兴趣的是按一定列分组中位数.我现在看到的唯一工作是为每个不同的组成员生成一个分位数查询,其中组成员是where子句中的条件.

例如,如果我想获得所需的结果,我会对列-y中的每个不同行使用以下查询.

SELECT QUANTILE( <column-x>, 1001)
FROM <table>
WHERE 
    <column-y> == <each distinct row in column-y>
Run Code Online (Sandbox Code Playgroud)
  1. 大型查询团队是否计划在将来允许对分位数进行分组的某些功能?
  2. 有没有更好的方法来获得我想要到达的地方?

谢谢

Fel*_*ffa 7

通过最近公布的percentile_cont()窗口函数,您可以获得中位数.

请看公告博客文章中的示例:

http://googlecloudplatform.blogspot.com/2013/06/google-bigquery-bigger-faster-smarter-analytics-functions.html

SELECT MAX(median) AS median, room FROM (
  SELECT percentile_cont(0.5) OVER (PARTITION BY room ORDER BY data) AS median, room
  FROM [io_sensor_data.moscone_io13]
  WHERE sensortype='temperature'
)
GROUP BY room
Run Code Online (Sandbox Code Playgroud)


Jor*_*ani 1

虽然有有效的算法来计算分位数,但它们在某种程度上是内存密集型的 - 尝试在单个查询中进行多个分位数计算会变得昂贵。

  1. 有计划改进 QUANTILES,但我不知道时间表是什么。
  2. 需要中位数吗?你能过滤掉异常值并对剩余的进行平均吗?