perintah statistik - OpenSearch Layanan Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

perintah statistik

Gunakan stats perintah untuk menghitung agregasi dari hasil pencarian.

catatan

Untuk melihat integrasi sumber AWS data mana yang mendukung PPL perintah ini, lihatCommands.

NULL/penanganan MISSING nilai

NULL/penanganan MISSING nilai
Fungsi NULL MISSING
COUNT Tidak dihitung Tidak dihitung
SUM Abaikan Abaikan
AVG Abaikan Abaikan
MAX Abaikan Abaikan
MIN Abaikan Abaikan
Sintaks

Gunakan sintaks berikut:

stats <aggregation>... [by-clause]
pengumpulan
  • Wajib.

  • Fungsi agregasi diterapkan ke bidang.

oleh-klausa
  • Tidak wajib.

  • Sintaks: by [span-expression,] [field,]...

  • Menentukan bidang dan ekspresi untuk mengelompokkan hasil agregasi. Klausa demi memungkinkan Anda mengelompokkan hasil agregasi menggunakan bidang dan ekspresi. Anda dapat menggunakan fungsi skalar, fungsi agregasi, dan bahkan ekspresi rentang untuk membagi bidang tertentu menjadi bucket dengan interval yang sama.

  • Default: Jika tidak <by-clause> ditentukan, perintah stats mengembalikan satu baris yang mewakili agregasi atas seluruh set hasil.

span-ekspresi

  • Opsional, paling banyak satu.

  • Sintaks: span(field_expr, interval_expr)

  • Satuan ekspresi interval adalah unit alami secara default. Jika bidang adalah bidang tipe tanggal dan waktu, dan intervalnya dalam satuan tanggal/waktu, Anda menentukan unit dalam ekspresi interval.

  • Misalnya, membelah age lapangan menjadi ember 10 tahun, sepertinya. span(age, 10) Untuk membagi bidang stempel waktu menjadi interval per jam, gunakan. span(timestamp, 1h)

Unit waktu yang tersedia
Satuan interval rentang
milidetik (ms)
kedua (s)
menit (m, peka huruf besar/kecil)
jam (h)
hari (d)
minggu (w)
bulan (M, peka huruf besar/kecil)
kuartal (q)
tahun (y)
Fungsi agregasi

COUNT

Mengembalikan hitungan jumlah expr dalam baris diambil oleh pernyataanSELECT.

Contoh:

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

Gunakan SUM(expr) untuk mengembalikan jumlah expr.

Contoh

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

Gunakan AVG(expr) untuk mengembalikan nilai rata-rata expr.

Contoh

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

Gunakan MAX(expr) untuk mengembalikan nilai maksimum expr.

Contoh

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

Gunakan MIN(expr) untuk mengembalikan nilai minimum expr.

Contoh

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

Gunakan STDDEV_SAMP(expr) untuk mengembalikan standar deviasi sampel expr.

Contoh:

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

Gunakan STDDEV_POP(expr) untuk mengembalikan standar deviasi populasi expr.

Contoh:

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

Gunakan TAKE(field [, size]) untuk mengembalikan nilai asli bidang. Itu tidak menjamin urutan nilai.

bidang
  • Wajib.

  • Bidang harus berupa bidang teks.

ukuran
  • Bilangan bulat opsional.

  • Jumlah nilai harus dikembalikan.

  • Defaultnya adalah 10.

Contoh

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

Gunakan PERCENTILE(expr, percent) atau PERCENTILE_APPROX(expr, percent) untuk mengembalikan nilai persentil perkiraan expr pada persentase yang ditentukan.

persen
  • Angka harus konstanta antara 0 dan 100.

Contoh

os> source=accounts | stats percentile(age, 90) by gender; fetched rows / total rows = 2/2 +-----------------------+----------+ | percentile(age, 90) | gender | |-----------------------+----------| | 28 | F | | 36 | M | +-----------------------+----------+
Contoh 1: Hitung jumlah peristiwa

Contoh menunjukkan cara menghitung jumlah peristiwa di akun.

os> source=accounts | stats count(); fetched rows / total rows = 1/1 +-----------+ | count() | |-----------| | 4 | +-----------+
Contoh 2: Hitung rata-rata bidang

Contoh menunjukkan cara menghitung usia rata-rata untuk semua akun.

os> source=accounts | stats avg(age); fetched rows / total rows = 1/1 +------------+ | avg(age) | |------------| | 32.25 | +------------+
Contoh 3: Hitung rata-rata bidang menurut grup

Contoh menunjukkan cara menghitung usia rata-rata untuk semua akun, dikelompokkan berdasarkan jenis kelamin.

os> source=accounts | stats avg(age) by gender; fetched rows / total rows = 2/2 +--------------------+----------+ | avg(age) | gender | |--------------------+----------| | 28.0 | F | | 33.666666666666664 | M | +--------------------+----------+
Contoh 4: Hitung rata-rata, jumlah, dan hitungan bidang menurut grup

Contoh menunjukkan cara menghitung usia rata-rata, jumlah usia, dan jumlah peristiwa untuk semua akun, dikelompokkan berdasarkan jenis kelamin.

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 | +--------------------+------------+-----------+----------+
Contoh 5: Hitung maksimum bidang

Contoh menghitung usia maksimum untuk semua akun.

os> source=accounts | stats max(age); fetched rows / total rows = 1/1 +------------+ | max(age) | |------------| | 36 | +------------+
Contoh 6: Hitung maksimum dan minimum bidang menurut grup

Contoh menghitung nilai usia maksimum dan minimum untuk semua akun, dikelompokkan berdasarkan jenis kelamin.

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 | +------------+------------+----------+
Contoh 7: Hitung jumlah bidang yang berbeda

Untuk mendapatkan hitungan nilai bidang yang berbeda, Anda dapat menggunakan fungsi DISTINCT_COUNT (atauDC) sebagai gantinyaCOUNT. Contoh menghitung hitungan dan hitungan yang berbeda dari bidang gender dari semua akun.

os> source=accounts | stats count(gender), distinct_count(gender); fetched rows / total rows = 1/1 +-----------------+--------------------------+ | count(gender) | distinct_count(gender) | |-----------------+--------------------------| | 4 | 2 | +-----------------+--------------------------+
Contoh 8: Hitung hitungan dengan rentang

Contohnya mendapat hitungan usia dengan interval 10 tahun.

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 | +--------------+------------+
Contoh 9: Hitung hitungan berdasarkan jenis kelamin dan rentang

Contoh ini menghitung catatan yang dikelompokkan berdasarkan jenis kelamin dan rentang usia 5 tahun.

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 | +-------+------------+----------+

Ekspresi span selalu muncul sebagai kunci pengelompokan pertama, terlepas dari urutan yang ditentukan dalam perintah.

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 | +-------+------------+----------+
Contoh 10: Hitung hitungan dan dapatkan daftar email berdasarkan jenis kelamin dan rentang

Contoh mendapatkan hitungan usia dengan interval 10 tahun dan kelompok berdasarkan jenis kelamin, selain itu untuk setiap baris mendapatkan daftar paling banyak 5 email.

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 | +-------+----------------------------------------------------+------------+----------+
Contoh 11: Hitung persentil suatu bidang

Contoh menunjukkan bagaimana menghitung persentil usia 90 dari semua akun.

os> source=accounts | stats percentile(age, 90); fetched rows / total rows = 1/1 +-----------------------+ | percentile(age, 90) | |-----------------------| | 36 | +-----------------------+
Contoh 12: Hitung persentil bidang berdasarkan grup

Contoh menunjukkan bagaimana menghitung persentil usia 90 dari semua grup akun berdasarkan jenis kelamin.

os> source=accounts | stats percentile(age, 90) by gender; fetched rows / total rows = 2/2 +-----------------------+----------+ | percentile(age, 90) | gender | |-----------------------+----------| | 28 | F | | 36 | M | +-----------------------+----------+
Contoh 13: Hitung persentil berdasarkan jenis kelamin dan rentang

Contohnya mendapatkan persentil usia 90 dengan interval 10 tahun dan kelompok berdasarkan jenis kelamin.

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)`
Agregasi dengan rentang

- `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`
Agregasi dengan rentang jendela waktu (fungsi jendela jatuh)

- `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`
Kelompok agregasi berdasarkan berbagai tingkatan

- `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`