Partilhar via


histogram_numeric função agregar

Aplica-se a: Marque Sim Databricks SQL Marque Sim Databricks Runtime 10,2 e posterior

Calcula um histograma usando expr numBins compartimentos.

Sintaxe

histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]

Argumentos

  • expr: Um numérico, TIMESTAMP, DATE, ou INTERVAL expressão que a função consome e calcula o histograma.
  • numBins: Um INTEGER literal que deve ser maior que 1, especificando o número de compartimentos para o cálculo do histograma.
  • cond: Uma expressão opcional BOOLEAN que filtra as linhas para agregação.

Devoluções

O valor de retorno é um ARRAY de STRUCTS com campos x e y representando os centros dos compartimentos do histograma. O tipo de x é o mesmo que o tipo de expr, e o tipo de y é DOUBLE. Aumentar o valor de refina a aproximação do numBins histograma, tornando-o mais fino. No entanto, ele pode introduzir artefatos em torno de outliers. Normalmente, 20-40 compartimentos são eficazes para histogramas, embora conjuntos de dados distorcidos ou menores possam exigir mais compartimentos. Observe que essa função cria um histograma com larguras de compartimento não uniformes. Não oferece garantias em termos do erro quadrático médio do histograma, mas na prática é comparável aos histogramas produzidos por outros pacotes de computação.

A especificação DISTINCT faz com que a função opere apenas em um conjunto exclusivo de expr valores.

Exemplos

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0), (1), (2), (10) AS tab(col);
 [{"x":0.0,"y":1.0},{"x":1.0,"y":1.0},{"x":2.0,"y":1.0},{"x":10.0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0L), (1L), (2L), (10L) AS tab(col);
 [{"x":0,"y":1.0},{"x":1,"y":1.0},{"x":2,"y":1.0},{"x":10,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0F), (1F), (2F), (10F) AS tab(col);
 [{"x":0.0,"y":1.0},{"x":1.0,"y":1.0},{"x":2.0,"y":1.0},{"x":10.0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0D), (1D), (2D), (10D) AS tab(col);
 [{"x":0.0,"y":1.0},{"x":1.0,"y":1.0},{"x":2.0,"y":1.0},{"x":10.0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (INTERVAL 0 YEAR), (INTERVAL 1 YEAR), (INTERVAL 2 YEAR),
    (INTERVAL 3 YEAR) AS tab(col);
 [{"x":0-0,"y":1.0},{"x":1-0,"y":1.0},{"x":2-0,"y":1.0},{"x":3-0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (INTERVAL 0 DAY), (INTERVAL 1 DAY), (INTERVAL 2 DAY),
    (INTERVAL 3 DAY) AS tab(col);
  [{"x":0 00:00:00.000000000,"y":1.0},{"x":1 00:00:00.000000000,"y":1.0},{"x":2 00:00:00.000000000,"y":1.0},{"x":3 00:00:00.000000000,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (TIMESTAMP '2020-01-01'), (TIMESTAMP'2020-02-01'),
    (TIMESTAMP'2020-03-01'), (TIMESTAMP'2020-10-01') AS tab(col)
  [{"x":2020-01-01 00:00:00,"y":1.0},{"x":2020-02-01 00:00:00,"y":1.0},{"x":2020-03-01 00:00:00,"y":1.0},{"x":2020-10-01 00:00:00,"y":1.0}]