다음을 통해 공유


histogram_numeric 집계 함수

적용 대상:확인 표시 있음 Databricks SQL 확인 표시 있음 Databricks Runtime 10.2 이상

expr에서 numBins 개의 bin을 사용하여 히스토그램을 계산합니다.

구문

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

인수

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

반품

반환 값은 ARRAYSTRUCTS로, 필드 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}]