다음을 통해 공유


histogram_numeric 집계 함수

적용 대상: 예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime 10,2 이상

bin 사용에 대한 히스토그램을 expr numBins 계산합니다.

구문

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

인수

  • expr: 함수가 히스토그램을 사용하고 계산하는 숫자, TIMESTAMP또는 DATEINTERVAL 식입니다.
  • numBinsINTEGER: 히스토그램 계산에 대한 bin 수를 지정하는 1보다 커야 하는 리터럴입니다.
  • cond: 집계를 위해 행을 필터링하는 선택적 BOOLEAN 식입니다.

반품

반환 값은 ARRAY STRUCTS 필드 xy 히스토그램 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}]