Dalam bidang analisis data dan risikan perniagaan, OLAP (Pemprosesan Analitikal Dalam Talian) berdiri sebagai teknologi asas, analisis multidimensi yang memudahkan set data yang luas. OLAP membolehkan pengguna memperoleh cerapan daripada data dengan menganalisisnya merentas berbilang dimensi, memberikan pandangan menyeluruh tentang metrik dan prestasi perniagaan.
Jadi sekarang kita akan membincangkan tiga ciri utama OLAP iaitu pengendali SET CUBE, ROLLUP DAN GROUPING. Itu akan memainkan peranan penting dalam meringkaskan dan mengagregat data dalam pelbagai cara.
Kita bincang dulu yang pertama iaitu:
Kubus ialah alat berkuasa dalam OLAP, ia boleh menjana semua kemungkinan gabungan dimensi dan agregatnya. Ia menyediakan paparan berbilang dimensi yang komprehensif bagi data dengan mengira subjumlah dan jumlah untuk setiap gabungan dimensi, membolehkan pengguna meneroka data daripada perspektif dan tahap butiran yang berbeza.
Baiklah ia agak teknikal pada mulanya tetapi ia pasti anda akan memahaminya apabila kami akan menggunakannya dalam pertanyaan.
Katakanlah kita ingin mengetahui kiraan setiap orang yang menyewa di sesebuah negara, dan jantina mereka.
SELECT country, gender, COUNT(*) FROM rentals GROUP BY CUBE(country, gender) -- This one will group them by its country and gender.
Jadi outputnya ialah ini
| country | gender | COUNT(*) | |------------|----------|----------| | USA | Male | 100 | | USA | Female | 150 | | UK | Male | 120 | | UK | Female | 130 | | NULL | Male | 220 | <-- Subtotal for Male across all countries | NULL | Female | 280 | <-- Subtotal for Female across all countries | USA | NULL | 250 | <-- Subtotal for USA across all genders | UK | NULL | 250 | <-- Subtotal for UK across all genders | NULL | NULL | 500 | <-- Grand total
Lihat setiap baris mewakili gabungan unik "negara" dan "jantina". Itulah kegunaan CUBE ia akan menjana semua kemungkinan gabungan berdasarkan apa yang anda agregat. kami mempunyai jumlah kecil untuk setiap kategori dan jumlah besar.
Operator ROLLUP digunakan untuk menjana data roll-up hierarki. Ia mengira subjumlah untuk hierarki dimensi yang dipratentukan, biasanya bergerak daripada tahap butiran yang paling terperinci kepada yang paling kurang terperinci. Ia menjana subjumlah untuk setiap peringkat hierarki, menghasilkan set hasil yang merangkumi subjumlah untuk setiap gabungan lajur yang ditentukan, serta jumlah besar. Ia seperti lebih mengatur kemudian mari buat contoh sekali lagi.
SELECT country, gender, COUNT(*) AS rental_count FROM rentals GROUP BY ROLLUP (country, gender);
Kemudian outputnya ialah ini
| country | gender | rental_count | |----------|---------|--------------| | NULL | NULL | 8 | <-- Grand total | NULL | Male | 3 | <-- Subtotal for Male across all countries | NULL | Female | 5 | <-- Subtotal for Female across all countries | USA | NULL | 3 | <-- Subtotal for USA across all genders | USA | Male | 2 | | USA | Female | 1 | | UK | NULL | 3 | <-- Subtotal for UK across all genders | UK | Male | 1 | | UK | Female | 2 |
anda melihatnya tersusun selepas kiraan setiap kategori, ia akan mencetak sub jumlah itu kemudian seterusnya ialah jumlah besar. Anda mungkin perasan bahawa jumlah kecil untuk setiap kategori sering muncul bersebelahan dengan baris kategori yang sepadan. Ini kerana pengendali ROLLUP direka bentuk untuk menyediakan output yang intuitif dan boleh dibaca, meletakkan subtotal berdekatan dengan data yang mereka rumuskan.
Kami menggunakan operator GROUPING SETS untuk mengumpulkan kumpulan dengan hujah yang kami letakkan di dalam kumpulan seperti itu tetapi perbezaannya ialah kami boleh meletakkan seberapa banyak kumpulan di dalam seperti itu
KUMPULAN MENGIKUT PENGUMPULAN SET ((negara, jantina), (negara), (jantina)) Kita boleh mengumpulkan data ke dalam gabungan negara dan jantina dalam hujah pertama dan dalam hujah kedua kita mahu juga mengumpulkannya dalam negara sahaja dan seterusnya dalam hujah ketiga.
Ia seperti kita menggabungkan 3 kumpulan dalam 1 pertanyaan iaitu pertama satu ialah (negara, jantina), kemudian yang kedua ialah (negara), kemudian yang ketiga ialah (jantina). jadi jika anda ingin mencapai hasil yang sama tanpa menggunakan set kumpulan, anda memerlukan 3 pertanyaan untuk itu.
Mari kita teruskan ke contoh set kumpulan ini supaya kita boleh memahaminya.
SELECT country, gender, COUNT(*) AS rental_count FROM rentals GROUP BY GROUPING SETS (country, gender, ());
Maka outputnya ialah
| country | gender | rental_count | |----------|---------|--------------| | NULL | NULL | 8 | <-- Grand total | NULL | Male | 3 | <-- Subtotal for Male across all countries | NULL | Female | 5 | <-- Subtotal for Female across all countries | USA | NULL | 3 | <-- Subtotal for USA across all genders | USA | Male | 2 | | USA | Female | 1 | | UK | NULL | 3 | <-- Subtotal for UK across all genders | UK | Male | 1 | | UK | Female | 2 |
Jadi penjelasan di sini ialah setiap kombinasi unik negara, dan jantina ditunjukkan dalam jadual maka anda tertanya-tanya mengapa terdapat () maka itu kurungan kosong bermakna ia akan menjumlahkan semua kiraan dalam output tetapi jika kami mengalih keluar itu ia hanya akan menunjukkan sub jumlah setiap kategori.
Anda tertanya-tanya mengapa SET CUBE dan GROUPING mempunyai persamaan maka anda betul tetapi kiub mendapat semua kombinasi yang mungkin tetapi set kumpulan ialah kita boleh mengumpulkan seberapa banyak yang kita mahu dalam satu pertanyaan.
Saya tahu lelaki itu banyak yang perlu dipelajari tetapi jika anda terus menggunakan ini dalam pertanyaan anda dari semasa ke semasa, anda akan memahami setiap perkara ini. Terima kasih banyak :)
Atas ialah kandungan terperinci OLAP: SET KIUB, GULUNG DAN PENGUMPULAN. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!