根据bigquery查询引用,目前Quantiles不允许通过其他列进行任何类型的分组 . 我主要对获得 medians grouped by a certain column 感兴趣 . 我现在看到的唯一工作是为每个不同的组成员生成一个分位数查询,其中组成员是where子句中的条件 .
例如,如果我想获得所需的结果,我会对列-y中的每个不同行使用以下查询 .
SELECT QUANTILE( <column-x>, 1001)
FROM <table>
WHERE
<column-y> == <each distinct row in column-y>
-
大型查询团队是否计划在未来允许对分位数进行分组的某些功能?
-
有没有更好的方法来获得我想要的东西?
谢谢
3 回答
虽然存在有效的算法来计算分位数,但它们在某种程度上是内存密集型的 - 尝试在单个查询中进行多个分位数计算变得昂贵 .
有计划改进QUANTILES,但我不知道时间轴是什么 .
你需要中位数吗?你能过滤异常值并做其余的平均值吗?
通过最近公布的percentile_cont()窗口函数,您可以获得中位数 .
请看公告博客文章中的示例:
http://googlecloudplatform.blogspot.com/2013/06/google-bigquery-bigger-faster-smarter-analytics-functions.html
如果您的每组大小是固定的,您可以使用
order
,nest
和nth
的组合来破解它 . 例如,如果f1
的每个值有9个不同的f2
值,则为中位数:不确定子查询中的排序顺序是否能保证在第二个
group
中存活,但它在我尝试的简单测试中起作用 .