HISTOGRAM (Lakehouse v1)
Genera un histograma de la distribución de los datos con una estrategia de buckets de “igual altura”.
Sintaxis de Analyze
Sección titulada «Sintaxis de Analyze»func.histogram(<expr>)Ejemplos de Analyze
Sección titulada «Ejemplos de Analyze»Consulte el ejemplo de SQL para obtener más información
Sintaxis de SQL
Sección titulada «Sintaxis de SQL»HISTOGRAM(<expr>)
-- The following two forms are equivalent:HISTOGRAM(<max_num_buckets>)(<expr>)HISTOGRAM(<expr> [, <max_num_buckets>])| Parámetro | Descripción |
|---|---|
expr |
El tipo de datos de expr debe poder ordenarse. |
max_num_buckets |
Entero positivo opcional que especifica el número máximo de buckets. El valor predeterminado es 128. |
Tipo de valor devuelto
Sección titulada «Tipo de valor devuelto»Devuelve una cadena vacía o un objeto JSON con la siguiente estructura:
- buckets: lista de buckets con información detallada:
- lower: límite inferior del bucket.
- upper: límite superior del bucket.
- count: recuento de elementos del bucket.
- pre_sum: recuento acumulado de elementos hasta el bucket actual.
- ndv: número de valores distintos del bucket.
Ejemplos de SQL
Sección titulada «Ejemplos de SQL»Este ejemplo muestra cómo la función HISTOGRAM analiza la distribución de los valores de c_int en la tabla histagg y devuelve los límites de los buckets, los recuentos de valores distintos, los recuentos de elementos y los recuentos acumulados:
CREATE TABLE histagg ( c_id INT, c_tinyint TINYINT, c_smallint SMALLINT, c_int INT);
INSERT INTO histagg VALUES (1, 10, 20, 30), (1, 11, 21, 33), (1, 11, 12, 13), (2, 21, 22, 23), (2, 31, 32, 33), (2, 10, 20, 30);
SELECT HISTOGRAM(c_int) FROM histagg;
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐│ histogram(c_int) │├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤│ [{"lower":"13","upper":"13","ndv":1,"count":1,"pre_sum":0},{"lower":"23","upper":"23","ndv":1,"count":1,"pre_sum":1},{"lower":"30","upper":"30","ndv":1,"count":2,"pre_sum":2},{"lower":"33","upper":"33","ndv":1,"count":2,"pre_sum":4}] │└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘El resultado se devuelve como una matriz JSON:
[ { "lower": "13", "upper": "13", "ndv": 1, "count": 1, "pre_sum": 0 }, { "lower": "23", "upper": "23", "ndv": 1, "count": 1, "pre_sum": 1 }, { "lower": "30", "upper": "30", "ndv": 1, "count": 2, "pre_sum": 2 }, { "lower": "33", "upper": "33", "ndv": 1, "count": 2, "pre_sum": 4 }]Este ejemplo muestra cómo HISTOGRAM(2) agrupa los valores de c_int en dos buckets:
SELECT HISTOGRAM(2)(c_int) FROM histagg;-- OrSELECT HISTOGRAM(c_int, 2) FROM histagg;
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐│ histogram(2)(c_int) │├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤│ [{"lower":"13","upper":"30","ndv":3,"count":4,"pre_sum":0},{"lower":"33","upper":"33","ndv":1,"count":2,"pre_sum":4}] │└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘El resultado se devuelve como una matriz JSON:
[ { "lower": "13", "upper": "30", "ndv": 3, "count": 4, "pre_sum": 0 }, { "lower": "33", "upper": "33", "ndv": 1, "count": 2, "pre_sum": 4 }]