AWS Athena - применить фильтр, а затем вычислить процентили - PullRequest
0 голосов
/ 13 июня 2018

Я использую AWS Athena для вычисления некоторых показателей.У меня есть такой набор данных:

sessionumber 0 10 -1 10 2 -10 10

Я пытаюсь вычислить процентили для этих значений, но только для подмножества допустимых значений.Допустимое значение - sessionnumber > 1, поэтому я попытался это сделать:

with testfun AS 
    (SELECT filter(array_agg(sessionnumber), x -> x >= 1) as validvalues 
     FROM "mydate")

SELECT (percentiles(validvalues, 0.25) FROM testfun

Но я получил следующую ошибку:

SYNTAX_ERROR: line 17:10: Unexpected parameters (array(integer), double) for function approx_percentile. Expected: approx_percentile(bigint, double) , approx_percentile(bigint, bigint, double) , approx_percentile(bigint, bigint, double, double) , approx_percentile(bigint, array(double)) , approx_percentile(bigint, bigint, array(double)) , approx_percentile(double, double) , approx_percentile(double, bigint, double, double) , approx_percentile(double, bigint, double) , approx_percentile(double, array(double)) , approx_percentile(double, bigint, array(double)) , approx_percentile(real, double) , approx_percentile(real, bigint, double, double) , approx_percentile(real, bigint, double) , approx_percentile(real, array(double)) , approx_percentile(real, bigint, array(double))

Я понял свою ошибку, но не могу найти способ ее исправитьс AWS Athena / PrestoDB.Возможно ли даже такое сделать?

1 Ответ

0 голосов
/ 13 июня 2018

Я нашел, как решить это, и я делюсь этим здесь:

WITH validValues AS 
(SELECT approx_percentile(sessionnumber, ARRAY[0.25,0.50,0.75,0.95, 0.99]) as percentiles from (SELECT sessionnumber from "20180407" where sessionnumber >= 1))

SELECT percentiles FROM testfun, validValues 
...