stats 명령 - Amazon OpenSearch Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

stats 명령

stats 명령을 사용하여 검색 결과에서 집계를 계산합니다.

참고

이 PPL 명령을 지원하는 AWS 데이터 소스 통합을 확인하려면 섹션을 참조하세요명령.

NULL/MISSING 값 처리

NULL/MISSING 값 처리
함수 NULL MISSING
COUNT 계산되지 않음 계산되지 않음
SUM 무시 무시
AVG 무시 무시
MAX 무시 무시
MIN 무시 무시
구문

다음 구문을 사용합니다.

stats <aggregation>... [by-clause]
집계
  • 필수.

  • 필드에 적용되는 집계 함수입니다.

조별
  • 선택 사항.

  • 구문: by [span-expression,] [field,]...

  • 집계 결과를 그룹화하기 위한 필드와 표현식을 지정합니다. 분류를 통해 필드와 표현식을 사용하여 집계 결과를 그룹화할 수 있습니다. 스칼라 함수, 집계 함수 및 스팬 표현식을 사용하여 특정 필드를 동일한 간격의 버킷으로 분할할 수 있습니다.

  • 기본값:를 지정하지 않으면 stats 명령<by-clause>은 전체 결과 세트에 대한 집계를 나타내는 단일 행을 반환합니다.

스팬 표현식

  • 선택 사항, 최대 1개.

  • 구문: span(field_expr, interval_expr)

  • 간격 표현식의 단위는 기본적으로 자연 단위입니다. 필드가 날짜 및 시간 유형 필드이고 간격이 날짜/시간 단위인 경우 간격 표현식에 단위를 지정합니다.

  • 예를 들어 age 필드를 버킷으로 10년 분할하면 처럼 보입니다span(age, 10). 타임스탬프 필드를 시간별 간격으로 분할하려면를 사용합니다span(timestamp, 1h).

사용 가능한 시간 단위
스팬 간격 단위
밀리초(ms)
초(초)
분(m, 대/소문자 구분)
시간(h)
일(d)
주(w)
월(M, 대/소문자 구분)
분기(q)
연도(y)
집계 함수

COUNT

SELECT 문으로 검색된 행의 expr 수를 반환합니다.

예제:

os> source=accounts | stats count(); fetched rows / total rows = 1/1 +-----------+ | count() | |-----------| | 4 | +-----------+
SUM

SUM(expr)를 사용하여 expr의 합계를 반환합니다.

예제

os> source=accounts | stats sum(age) by gender; fetched rows / total rows = 2/2 +------------+----------+ | sum(age) | gender | |------------+----------| | 28 | F | | 101 | M | +------------+----------+
AVG

AVG(expr)를 사용하여 expr의 평균 값을 반환합니다.

예제

os> source=accounts | stats avg(age) by gender; fetched rows / total rows = 2/2 +--------------------+----------+ | avg(age) | gender | |--------------------+----------| | 28.0 | F | | 33.666666666666664 | M | +--------------------+----------+
MAX

MAX(expr)를 사용하여 expr의 최대값을 반환합니다.

예제

os> source=accounts | stats max(age); fetched rows / total rows = 1/1 +------------+ | max(age) | |------------| | 36 | +------------+
MIN

MIN(expr)를 사용하여 expr의 최소값을 반환합니다.

예제

os> source=accounts | stats min(age); fetched rows / total rows = 1/1 +------------+ | min(age) | |------------| | 28 | +------------+
STDDEV_SAMP

STDDEV_SAMP(expr)를 사용하여 expr의 샘플 표준 편차를 반환합니다.

예제:

os> source=accounts | stats stddev_samp(age); fetched rows / total rows = 1/1 +--------------------+ | stddev_samp(age) | |--------------------| | 3.304037933599835 | +--------------------+
STDDEV_POP

STDDEV_POP(expr)를 사용하여 expr의 모집단 표준 편차를 반환합니다.

예제:

os> source=accounts | stats stddev_pop(age); fetched rows / total rows = 1/1 +--------------------+ | stddev_pop(age) | |--------------------| | 2.**************** | +--------------------+
TAKE

TAKE(field [, size])를 사용하여 필드의 원래 값을 반환합니다. 값의 순서를 보장하지는 않습니다.

필드
  • 필수.

  • 필드는 텍스트 필드여야 합니다.

size
  • 선택적 정수입니다.

  • 값 수를 반환해야 합니다.

  • 기본값은 10입니다.

예제

os> source=accounts | stats take(firstname); fetched rows / total rows = 1/1 +-----------------------------+ | take(firstname) | |-----------------------------| | [Jane, Mary, Nikki, Juan | +-----------------------------+
PERCENTILE 또는 PERCENTILE_APPROX

PERCENTILE(expr, percent) 또는 PERCENTILE_APPROX(expr, percent)를 사용하여 expr의 대략적인 백분위수 값을 지정된 백분율로 반환합니다.

%
  • 숫자는 0에서 100 사이의 상수여야 합니다.

예제

os> source=accounts | stats percentile(age, 90) by gender; fetched rows / total rows = 2/2 +-----------------------+----------+ | percentile(age, 90) | gender | |-----------------------+----------| | 28 | F | | 36 | M | +-----------------------+----------+
예제 1: 이벤트 수 계산

이 예제는 계정의 이벤트 수를 계산하는 방법을 보여줍니다.

os> source=accounts | stats count(); fetched rows / total rows = 1/1 +-----------+ | count() | |-----------| | 4 | +-----------+
예제 2: 필드의 평균 계산

이 예제는 모든 계정의 평균 수명을 계산하는 방법을 보여줍니다.

os> source=accounts | stats avg(age); fetched rows / total rows = 1/1 +------------+ | avg(age) | |------------| | 32.25 | +------------+
예제 3: 그룹별 필드 평균 계산

이 예제는 성별로 그룹화된 모든 계정의 평균 연령을 계산하는 방법을 보여줍니다.

os> source=accounts | stats avg(age) by gender; fetched rows / total rows = 2/2 +--------------------+----------+ | avg(age) | gender | |--------------------+----------| | 28.0 | F | | 33.666666666666664 | M | +--------------------+----------+
예제 4: 그룹별로 필드의 평균, 합계 및 개수 계산

이 예제에서는 성별별로 그룹화된 모든 계정의 평균 연령, 합계 연령 및 이벤트 수를 계산하는 방법을 보여줍니다.

os> source=accounts | stats avg(age), sum(age), count() by gender; fetched rows / total rows = 2/2 +--------------------+------------+-----------+----------+ | avg(age) | sum(age) | count() | gender | |--------------------+------------+-----------+----------| | 28.0 | 28 | 1 | F | | 33.666666666666664 | 101 | 3 | M | +--------------------+------------+-----------+----------+
예제 5: 필드의 최대값 계산

이 예제에서는 모든 계정의 최대 수명을 계산합니다.

os> source=accounts | stats max(age); fetched rows / total rows = 1/1 +------------+ | max(age) | |------------| | 36 | +------------+
예제 6: 그룹별 필드의 최대값 및 최소값 계산

이 예제에서는 성별로 그룹화된 모든 계정의 최대 및 최소 연령 값을 계산합니다.

os> source=accounts | stats max(age), min(age) by gender; fetched rows / total rows = 2/2 +------------+------------+----------+ | max(age) | min(age) | gender | |------------+------------+----------| | 28 | 28 | F | | 36 | 32 | M | +------------+------------+----------+
예제 7: 필드의 고유 개수 계산

필드의 고유 값 수를 가져오려면 대신 DISTINCT_COUNT (또는 DC) 함수를 사용할 수 있습니다COUNT. 이 예제에서는 모든 계정의 성별 필드 수와 고유 수를 모두 계산합니다.

os> source=accounts | stats count(gender), distinct_count(gender); fetched rows / total rows = 1/1 +-----------------+--------------------------+ | count(gender) | distinct_count(gender) | |-----------------+--------------------------| | 4 | 2 | +-----------------+--------------------------+
예제 8: 범위별 계산

이 예제에서는 연령을 10년 간격으로 가져옵니다.

os> source=accounts | stats count(age) by span(age, 10) as age_span fetched rows / total rows = 2/2 +--------------+------------+ | count(age) | age_span | |--------------+------------| | 1 | 20 | | 3 | 30 | +--------------+------------+
예제 9: 성별 및 범위별로 개수 계산

이 예제에서는 성별 및 5년의 연령 범위별로 그룹화된 레코드를 계산합니다.

os> source=accounts | stats count() as cnt by span(age, 5) as age_span, gender fetched rows / total rows = 3/3 +-------+------------+----------+ | cnt | age_span | gender | |-------+------------+----------| | 1 | 25 | F | | 2 | 30 | M | | 1 | 35 | M | +-------+------------+----------+

스팬 표현식은 명령에 지정된 순서에 관계없이 항상 첫 번째 그룹화 키로 표시됩니다.

os> source=accounts | stats count() as cnt by gender, span(age, 5) as age_span fetched rows / total rows = 3/3 +-------+------------+----------+ | cnt | age_span | gender | |-------+------------+----------| | 1 | 25 | F | | 2 | 30 | M | | 1 | 35 | M | +-------+------------+----------+
예제 10: 성별 및 범위별로 개수 계산 및 이메일 목록 가져오기

이 예제에서는 연령을 10세 간격으로, 그룹을 성별로 구하고, 각 행에 대해 최대 5개의 이메일 목록을 가져옵니다.

os> source=accounts | stats count() as cnt, take(email, 5) by span(age, 5) as age_span, gender fetched rows / total rows = 3/3 +-------+----------------------------------------------------+------------+----------+ | cnt | take(email, 5) | age_span | gender | |-------+----------------------------------------------------+------------+----------| | 1 | [] | 25 | F | | 2 | [janedoe@anycompany.com,juanli@examplecompany.org] | 30 | M | | 1 | [marymajor@examplecorp.com] | 35 | M | +-------+----------------------------------------------------+------------+----------+
예제 11: 필드의 백분위수 계산

이 예제는 모든 계정의 백분위수 90세를 계산하는 방법을 보여줍니다.

os> source=accounts | stats percentile(age, 90); fetched rows / total rows = 1/1 +-----------------------+ | percentile(age, 90) | |-----------------------| | 36 | +-----------------------+
예제 12: 그룹별로 필드의 백분위수 계산

이 예제에서는 성별을 기준으로 모든 계정 그룹의 백분위수 90세를 계산하는 방법을 보여줍니다.

os> source=accounts | stats percentile(age, 90) by gender; fetched rows / total rows = 2/2 +-----------------------+----------+ | percentile(age, 90) | gender | |-----------------------+----------| | 28 | F | | 36 | M | +-----------------------+----------+
예제 13: 성별 및 범위별로 백분위수 계산

이 예제에서는 백분위수 90세를 10년 간격으로, 그룹을 성별로 가져옵니다.

os> source=accounts | stats percentile(age, 90) as p90 by span(age, 10) as age_span, gender fetched rows / total rows = 2/2 +-------+------------+----------+ | p90 | age_span | gender | |-------+------------+----------| | 28 | 20 | F | | 36 | 30 | M | +-------+------------+----------+
- `source = table | stats avg(a) ` - `source = table | where a < 50 | stats avg(c) ` - `source = table | stats max(c) by b` - `source = table | stats count(c) by b | head 5` - `source = table | stats distinct_count(c)` - `source = table | stats stddev_samp(c)` - `source = table | stats stddev_pop(c)` - `source = table | stats percentile(c, 90)` - `source = table | stats percentile_approx(c, 99)`
스팬이 있는 집계

- `source = table | stats count(a) by span(a, 10) as a_span` - `source = table | stats sum(age) by span(age, 5) as age_span | head 2` - `source = table | stats avg(age) by span(age, 20) as age_span, country | sort - age_span | head 2`
기간 범위를 사용한 집계(텀블 윈도우 함수)

- `source = table | stats sum(productsAmount) by span(transactionDate, 1d) as age_date | sort age_date` - `source = table | stats sum(productsAmount) by span(transactionDate, 1w) as age_date, productId`
여러 수준별 집계 그룹

- `source = table | stats avg(age) as avg_state_age by country, state | stats avg(avg_state_age) as avg_country_age by country` - `source = table | stats avg(age) as avg_city_age by country, state, city | eval new_avg_city_age = avg_city_age - 1 | stats avg(new_avg_city_age) as avg_state_age by country, state | where avg_state_age > 18 | stats avg(avg_state_age) as avg_adult_country_age by country`