Compartilhar via


Função de agregação histogram_numeric

Aplica-se a: verificação marcada como sim SQL do Databricks verificação marcada como sim Databricks Runtime 10,2 e posterior

Calcula um histograma na expr usando compartimentos numBins.

Sintaxe

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

Argumentos

  • expr: uma expressão numérica, TIMESTAMP, DATE ou INTERVAL que é processada pela função para gerar o histograma.
  • numBins: um valor literal INTEGER que deve ser superior a 1, indicando a quantidade de compartimentos para o cálculo do histograma.
  • cond: uma expressão BOOLEAN opcional que serve para filtrar as linhas que serão agregadas.

Devoluções

O valor retornado é uma ARRAY de STRUCTS contendo os campos x e y, que representam os centros dos compartimentos do histograma. O tipo de x é o mesmo que o da expr, e o tipo de y é DOUBLE. Aumentar o valor de numBins deixa a aproximação do histograma mais refinada e detalhada. No entanto, isso pode gerar artefatos perto de valores atípicos. Normalmente, de 20 a 40 compartimentos são suficientes para a maioria dos histogramas, mas conjuntos de dados assimétricos ou menores podem exigir um número maior de compartimentos. Vale ressaltar que esta função cria um histograma com larguras de compartimento não uniformes. Ela não garante uma precisão em termos de erro quadrático médio do histograma, mas, na prática, os resultados são comparáveis aos histogramas gerados por outros softwares de computação.

Definir DISTINCT faz com que a função seja aplicada somente a um conjunto único de valores expr.

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}]