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