histogram_numeric
집계 함수
적용 대상: Databricks SQL Databricks Runtime 10,2 이상
bin 사용에 대한 히스토그램을 expr
numBins
계산합니다.
구문
histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]
인수
expr
: 함수가 히스토그램을 사용하고 계산하는 숫자,TIMESTAMP
또는DATE
INTERVAL
식입니다.numBins
INTEGER
: 히스토그램 계산에 대한 bin 수를 지정하는 1보다 커야 하는 리터럴입니다.cond
: 집계를 위해 행을 필터링하는 선택적BOOLEAN
식입니다.
반품
반환 값은 ARRAY
STRUCTS
필드 x
와 y
히스토그램 bin의 중심을 나타내는 값입니다. 형식 x
은 형식과 같 expr
으며 형식은 y
.입니다 DOUBLE
.
값을 numBins
늘리면 히스토그램 근사치가 구체화되어 세분화됩니다. 그러나 이상값을 중심으로 아티팩트가 도입 될 수 있습니다.
일반적으로 20-40개의 bin은 히스토그램에 효과적이지만 기울어지거나 작은 데이터 세트에는 더 많은 bin이 필요할 수 있습니다. 이 함수는 균일하지 않은 bin 너비를 가진 히스토그램을 만듭니다.
히스토그램의 평균 제곱 오차를 보장하지는 않지만 실제로는 다른 컴퓨팅 패키지에서 생성된 히스토그램과 비슷합니다.
지정하면 DISTINCT
함수가 고유한 값 집합 expr
에서만 작동합니다.
예제
> 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}]