표준 SQL의 근사치 집계 함수

근사치 집계 함수는 메모리 사용량과 시간 면에서 확장 가능하지만 정확한 결과가 아닌 근사치 결과를 산출합니다. 자세한 배경 정보는 근사치 집계를 참조하세요.

APPROX_COUNT_DISTINCT

APPROX_COUNT_DISTINCT(expression)

설명

COUNT(DISTINCT expression)의 근사치 결과를 반환합니다. 반환되는 값은 통계적 추정치이며 실제 값과 다를 수 있습니다.

이 함수는 COUNT(DISTINCT expression)보다 정확성이 떨어지지만 대량의 데이터를 입력할 때 성능 면에서 유리합니다.

지원되는 인수 유형

다음을 제외한 모든 데이터 유형: ARRAY STRUCT

반환되는 데이터 유형

INT64

예시

SELECT APPROX_COUNT_DISTINCT(x) as approx_distinct
FROM UNNEST([0, 1, 1, 2, 3, 5]) as x;

+-----------------+
| approx_distinct |
+-----------------+
| 5               |
+-----------------+

APPROX_QUANTILES

APPROX_QUANTILES([DISTINCT] expression, number [{IGNORE|RESPECT} NULLS])

설명

expression 값 그룹의 근사치 경계를 반환합니다. 여기서 number는 생성할 분위 수를 나타냅니다. 이 함수는 number + 1 요소 배열을 반환합니다. 여기서 첫 번째 요소는 근사치의 최소값이며 마지막 요소는 근사치의 최대값입니다.

지원되는 인수 유형

expression은 다음을 제외한 지원되는 모든 데이터 유형일 수 있습니다. ARRAY STRUCT

number는 INT64여야 합니다.

선택적 절

절은 다음 순서로 적용됩니다.

  1. DISTINCT: 각각의 고유한 expression 값이 한 번만 결과에 집계됩니다.

  2. IGNORE NULLS 또는 RESPECT NULLS: IGNORE NULLS가 지정되거나 아무것도 지정되지 않으면 NULL 값이 결과에서 제외됩니다. RESPECT NULLS가 지정되면 결과에 NULL 값이 포함됩니다. 하지만 최종 쿼리 결과 배열에 NULL 요소가 포함되어 있으면 오류가 발생합니다.

반환되는 데이터 유형

expression 매개변수에 의해 지정된 유형의 ARRAY.

0이 입력된 행이 있거나 expression이 모든 행에서 NULL로 평가되는 경우 NULL을 반환합니다.

예시

SELECT APPROX_QUANTILES(x, 2) AS approx_quantiles
FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x;

+------------------+
| approx_quantiles |
+------------------+
| [1, 5, 10]       |
+------------------+

SELECT APPROX_QUANTILES(x, 100)[OFFSET(90)] AS percentile_90
FROM UNNEST([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) AS x;

+---------------+
| percentile_90 |
+---------------+
| 9             |
+---------------+

SELECT APPROX_QUANTILES(DISTINCT x, 2) AS approx_quantiles
FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x;

+------------------+
| approx_quantiles |
+------------------+
| [1, 6, 10]       |
+------------------+

SELECT FORMAT("%T", APPROX_QUANTILES(x, 2 RESPECT NULLS)) AS approx_quantiles
FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x;

+------------------+
| approx_quantiles |
+------------------+
| [NULL, 4, 10]    |
+------------------+

SELECT FORMAT("%T", APPROX_QUANTILES(DISTINCT x, 2 RESPECT NULLS)) AS approx_quantiles
FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x;

+------------------+
| approx_quantiles |
+------------------+
| [NULL, 6, 10]    |
+------------------+

APPROX_TOP_COUNT

APPROX_TOP_COUNT(expression, number)

설명

expression의 근사치 최상위 요소를 반환합니다. number 매개변수는 반환되는 요소의 수를 지정합니다.

지원되는 인수 유형

expressionGROUP BY 절이 지원하는 모든 데이터 유형이 될 수 있습니다.

number는 INT64여야 합니다.

반환되는 데이터 유형

STRUCT 유형의 ARRAY입니다. STRUCT에는 2개의 필드가 포함됩니다. 첫 번째 필드(value)에는 입력 값이 포함됩니다. 두 번째 필드(count)에는 값이 반환된 횟수를 나타내는 INT64가 포함됩니다.

0이 입력된 행이 있으면 NULL을 반환합니다.

예시

SELECT APPROX_TOP_COUNT(x, 2) as approx_top_count
FROM UNNEST(["apple", "apple", "pear", "pear", "pear", "banana"]) as x;

+-------------------------+
| approx_top_count        |
+-------------------------+
| [{pear, 3}, {apple, 2}] |
+-------------------------+

NULL 처리

APPROX_TOP_COUNT는 입력에서 NULL을 무시하지 않습니다. 예를 들면 다음과 같습니다.

SELECT APPROX_TOP_COUNT(x, 2) as approx_top_count
FROM UNNEST([NULL, "pear", "pear", "pear", "apple", NULL]) as x;

+------------------------+
| approx_top_count       |
+------------------------+
| [{pear, 3}, {NULL, 2}] |
+------------------------+

APPROX_TOP_SUM

APPROX_TOP_SUM(expression, weight, number)

설명

할당된 weight의 합계를 바탕으로 expression의 근사치 최상위 요소를 반환합니다. number 매개변수는 반환되는 요소의 수를 지정합니다.

weight 입력이 음수이거나 NaN이면 이 함수는 오류를 반환합니다.

지원되는 인수 유형

expressionGROUP BY 절이 지원하는 모든 데이터 유형이 될 수 있습니다.

weight는 다음 중 하나여야 합니다.

  • INT64
  • FLOAT64

number는 INT64여야 합니다.

반환되는 데이터 유형

유형 STRUCT의 ARRAY입니다. STRUCT에는 valuesum이라는 2개의 필드가 포함됩니다. value 필드에는 입력 표현식의 값이 포함됩니다. sum 필드는 weight와 같은 유형으로, value 필드에 연결된 입력 가중치의 근사치 합계입니다.

0이 입력된 행이 있으면 NULL을 반환합니다.

예시

SELECT APPROX_TOP_SUM(x, weight, 2) AS approx_top_sum FROM
UNNEST([
  STRUCT("apple" AS x, 3 AS weight),
  ("pear", 2),
  ("apple", 0),
  ("banana", 5),
  ("pear", 4)
]);

+--------------------------+
| approx_top_sum           |
+--------------------------+
| [{pear, 6}, {banana, 5}] |
+--------------------------+

NULL 처리

APPROX_TOP_SUM은 expressionweight 매개변수의 NULL 값을 무시하지 않습니다.

SELECT APPROX_TOP_SUM(x, weight, 2) AS approx_top_sum FROM
UNNEST([STRUCT("apple" AS x, NULL AS weight), ("pear", 0), ("pear", NULL)]);

+----------------------------+
| approx_top_sum             |
+----------------------------+
| [{pear, 0}, {apple, NULL}] |
+----------------------------+
SELECT APPROX_TOP_SUM(x, weight, 2) AS approx_top_sum FROM
UNNEST([STRUCT("apple" AS x, 0 AS weight), (NULL, 2)]);

+-------------------------+
| approx_top_sum          |
+-------------------------+
| [{NULL, 2}, {apple, 0}] |
+-------------------------+
SELECT APPROX_TOP_SUM(x, weight, 2) AS approx_top_sum FROM
UNNEST([STRUCT("apple" AS x, 0 AS weight), (NULL, NULL)]);

+----------------------------+
| approx_top_sum             |
+----------------------------+
| [{apple, 0}, {NULL, NULL}] |
+----------------------------+
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.