1

BigQuery avec Legacy SQL a une fonction très pratique QUANTILES pour obtenir rapidement un histogramme des valeurs dans une table sans spécifier les buckets à la main.Fonction Quantiles dans BigQuery SQL Standard

Je ne trouve pas un équivalent équivalent dans les fonctions d'agrégation disponibles dans Standard SQL. Ai-je manqué quelque chose d'évident, ou autrement, quelle est la manière standard de l'émuler?

Répondre

5

Vous cherchez le APPROX_QUANTILES function :) L'un des exemples de la documentation est:

#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]  | 
+------------------+ 

Notez qu'il retourne un tableau, mais si vous voulez que les éléments du tableau sous forme de lignes individuelles, vous peut désintéresser le résultat:

#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;