2017-02-03 2 views
1

Я пытаюсь написать запрос, используя BigQuery Standard SQL (так как есть некоторые функции, которые мы хотим использовать).BigQuery: стандартный SQL и функция PERCENTILE_CONT()

Есть ли эквивалентная функция в стандартном SQL для PERCENTILE_CONT(), поскольку она поддерживается только при использовании опции Legacy SQL?

WITH 
    CTE_EmployeeData AS ( 
    SELECT 
    E.JobID, 
    E.FB1 
    FROM 
    ZA_Month_End_190.Employee_Primary_Data E 
    WHERE 
    JobID IN UNNEST([111,1414]) /* For these specidifc jobs */ 
    ), 
    CTE_Stats AS ( 
    SELECT 
    JobID,   
    COUNT(*) SampleSize,   
    SUM(CASE WHEN FB1 > 0 THEN 1 ELSE 0 END) WtdSampleSize_FB1, 
    CAST(SUM(FB1) AS INT64) WtdSum_FB1 
    FROM 
    CTE_EmployeeData 
    GROUP BY 
    JobID 
), 
    CTE_Percentiles AS ( 
    SELECT 
     ED.JobID,   
     CASE 
     WHEN S.SampleSize > 10 
     THEN PERCENTILE_CONT(0.25) OVER (PARTITION BY ED.JobID ORDER BY ED.FB1 DESC) [Percentile1] 
     ELSE 0 
     END [FB1_Percentile1]   
    FROM   
     CTE_Stats S 
    INNER JOIN CTE_EmployeeData ED ON S.JobID = ED.JobID 
) 
SELECT 
    * 
FROM 
    CTE_Percentiles 
+0

Это работа продолжается, но пока не доступен. Можете ли вы привести пример того, что вы пытаетесь сделать? Возможно, можно эмулировать одну и ту же функциональность, например, путем вычисления квантилей. –

+0

Привет Эллиот, я обновил вопрос на примере - пожалуйста, дайте мне знать, если это будет достаточно. –

ответ

0

Стандартный SQL в BigQuery не поддерживает PERCENTILE_CONT() ни PERCENTILE_DISC() как это делает в Наследства SQL. Если вы хотите увидеть эти функции, реализованные в стандартном SQL, я настоятельно рекомендую вам подать запрос функции на BigQuery public issue tracker. Если вы это сделаете, не стесняйтесь размещать ссылку на указанный запрос функции здесь, чтобы другие участники сообщества могли следовать.

Что касается выполнения аналогичного запроса без PERCENTILE_CONT, я бы рассмотрел вопрос о RANK_PERCENT(). Вы можете использовать полученные процентили, чтобы определить значение, которое вы установили . : получить от PERCENTILE_CONT(0.25) над ED.FB1 и затем интерполировать это значение самостоятельно на раздел.

2

BigQuery теперь, кажется, поддерживает PERCENTILE_CONT(variable, quantile) в стандарте SQL, хотя это в настоящее время не документированы.

Update: Now documented - благодаря Tobi

+1

Теперь он задокументирован на связанной странице (прокрутите до 'PERCENTILE_CONT') – Tobi

+1

Обязательно снимите флажок« Использовать устаревший SQL »в параметрах запроса, иначе вы получите это сообщение об ошибке:« PERCENTILE_CONT должен иметь 1 аргумент, найден 2 » – chrishiestand

Смежные вопросы