Saturday 26 August 2017

N hari eksponensial moving average


Exponential Moving Average Calculator Dengan daftar data point yang terurut, Anda dapat membangun rata-rata pergerakan tertimbang eksponensial dari semua titik sampai titik saat ini. Dalam rata-rata pergerakan eksponensial (EMA atau EWMA untuk jangka pendek), bobot turun dengan faktor konstan 945 seiring bertambahnya usia. Jenis rata-rata pergerakan kumulatif ini sering digunakan saat mencatat harga saham. Rumus rekursif untuk EMA adalah dimana x saat ini adalah todays current price point dan 945 adalah konstan antara 0 dan 1. Seringkali, 945 adalah fungsi dari jumlah hari tertentu N. Fungsi yang paling umum digunakan adalah 945 2 (N1). Misalnya, EMA 9 hari berurutan memiliki 945,2, sementara EMA 30 hari memiliki 945 231 0,06452. Untuk nilai 945 mendekati 1, urutan EMA dapat diinisialisasi pada EMA8321 x8321. Namun, jika 945 sangat kecil, istilah paling awal dalam urutan mungkin mendapat bobot yang tidak semestinya dengan inisialisasi semacam itu. Untuk memperbaiki masalah ini dalam EMA N-hari, istilah pertama urutan EMA ditetapkan sebagai rata-rata sederhana dari persyaratan 8968 (N-1) 28969 pertama, sehingga EMA dimulai pada nomor hari 8968 (N-1 ) 28969. Misalnya, dalam rata-rata pergerakan eksponensial 9-hari, EMA8324 (x8321x8322x8323x8324) 4. Kemudian EMA8325 0,2x8325 0.8EMA8324 dan EMA8326 0,2x8326 0,8EMA8325 dll Dengan menggunakan analis pergerakan rata-rata eksponensial, sering melihat EMA dan SMA (average moving average) harga saham untuk mencatat tren kenaikan dan penurunan atau harga, dan untuk membantu Mereka memprediksi perilaku masa depan. Seperti semua moving averages, level tertinggi dan terendah dari grafik EMA akan tertinggal dari level tertinggi dan terendah dari data yang tidak disaring sebelumnya. Semakin tinggi nilai N, semakin kecil 945 dan semakin halus grafiknya. Selain rata-rata pergerakan kumulatif tertimbang secara eksponensial, seseorang juga dapat menghitung rata-rata bergerak rata-rata tertimbang secara linear, di mana bobotnya menurun secara linier seiring dengan bertambahnya usia. Lihat artikel rata-rata dan kumulatif rata-rata kumulatif linier, kuadratik, dan kubik. Kalkulator True Range Spreadsheet 038 Tutorial Temukan bagaimana trader menggunakan range true true sebagai indikator stop-loss untuk membeli strategi penjualan, dan pelajari bagaimana cara menghitungnya di Excel. Rentang stock8217 adalah perbedaan antara harga maksimum dan minimum pada satu hari, dan sering digunakan sebagai indikator volatilitas. Namun, perdagangan sering terhenti jika harga naik atau turun dalam jumlah besar setiap hari. Hal ini kadang diamati dalam perdagangan komoditas, dan dapat menyebabkan kesenjangan antara harga pembukaan dan penutupan antara dua hari berturut-turut. Jangkauan harian tentu tidak akan menangkap informasi ini. J. Welles Wilder memperkenalkan rentang sebenarnya dan rentang sejat rata-rata pada tahun 1978 untuk lebih menggambarkan perilaku ini. Rentang sebenarnya menangkap perbedaan antara harga penutupan dan pembukaan antara dua hari berturut-turut. Rentang benar adalah yang terbesar dari selisih antara penutupan kemarin dan hari ini dan perbedaan antara penutupan hari kemarin dan hari ini semakin tinggi selisih antara hari ini dan tinggi hari ini. Nilai awal kisaran sebenarnya adalah tinggi harian yang rendah dari rendah harian. Rata-rata rentang sebenarnya (ATR) adalah rata-rata n-eksponensial. Dan dapat didekati dengan persamaan ini. Dimana n adalah jendela rata-rata bergerak (biasanya 14 hari) dan TR adalah kisaran sebenarnya. ATR biasanya diinisialisasi (pada t 0) dengan rata-rata trailing TR dari TR. Rentang rata-rata sebenarnya tidak menunjukkan arah pasar, namun hanya volatilitasnya. Persamaan ini memberikan pergerakan harga yang paling baru yang lebih signifikan, maka digunakan untuk mengukur sentimen pasar. Biasanya digunakan untuk menganalisis risiko mengambil posisi tertentu di pasar. Salah satu cara untuk melakukannya adalah dengan memprediksi pergerakan harian berdasarkan nilai historis ATR, dan masuk atau keluar dari pasar yang sesuai. Misalnya, stop-loss harian dapat ditetapkan pada 1,5 atau 2 kali rentang true rata-rata. Ini memberikan kebebasan harga aset untuk berubah secara alami selama hari perdagangan, namun tetap menetapkan posisi keluar yang masuk akal. Terlebih lagi, jika kontrak rentang rata-rata yang sebenarnya dan tren harga sedang tren ke atas, maka ini mungkin mengindikasikan bahwa sentimen pasar mungkin akan berubah. Dikombinasikan dengan Bollinger Bands. Rentang rata-rata sebenarnya adalah alat yang efektif untuk strategi perdagangan berbasis volatilitas. Hitung Rentang Rata-rata Rata-rata di Excel Lembar data Excel ini menggunakan harga saham harian untuk BP selama lima tahun dari tahun 2007 (diunduh dengan spreadsheet ini). Spreadsheet diberi penjelasan lengkap dengan persamaan dan komentar untuk membantu pemahaman Anda. Lembar kerja berikut, bagaimanapun, memiliki lebih banyak kecerdasan. Secara otomatis, plot rentang rata-rata yang sebenarnya, indeks kekuatan relatif dan volatilitas historis dari data yang secara otomatis diunduh dari Yahoo Finance. Anda memasukkan informasi berikut ticker saham periode perhitungan awal dan akhir perhitungan untuk volatilitas ATR, RSI dan historis Setelah mengklik sebuah tombol, spreadsheet mengunduh harga saham dari Yahoo Finance (secara khusus, harga harian terbuka, dekat, tinggi dan rendah antara Dua tanggal). Kemudian plot rentang rata-rata sebenarnya dan volatilitas historis. Ini sangat mudah digunakan untuk mendengarkan apa yang Anda pikirkan atau jika Anda memiliki banyak perbaikan yang Anda sukai. 11 pemikiran di ldquo Rata-rata True Range Spreadsheet 038 Tutorial rdquo Seperti Biji-bijian Gratis Basis Pengetahuan Guru Posting Terbaru22 SQL untuk Analisis dan Pelaporan Oracle telah meningkatkan kemampuan pemrosesan analisis SQL dengan memperkenalkan keluarga baru fungsi SQL analitik. Fungsi analitik ini memungkinkan Anda untuk menghitung: Tingkatan dan persentil Perhitungan jendela bergerak Regresi linier Statistik Fungsi peringkat mencakup distribusi kumulatif, peringkat persen, dan ubin N. Perhitungan jendela bergerak memungkinkan Anda menemukan agregasi bergerak dan kumulatif, seperti jumlah dan rata-rata. Analisis Laglead memungkinkan referensi antar baris langsung sehingga Anda dapat menghitung perubahan periode-ke-periode. Analisis firstlast memungkinkan Anda menemukan nilai pertama atau terakhir dalam grup yang dipesan. Perangkat tambahan lainnya ke SQL mencakup ekspresi CASE dan partisi outer join. Pernyataan CASE menyediakan jika-maka logika berguna dalam banyak situasi. Partisi outer join adalah perpanjangan sintaks join ANSI outer yang memungkinkan pengguna untuk secara selektif mengelompokkan dimensi tertentu sekaligus membuat orang lain jarang. Ini memungkinkan alat pelaporan memodifikasikan dimensi secara selektif, misalnya yang muncul dalam laporan lintas-tabular sambil membuat orang lain jarang. Untuk meningkatkan kinerja, fungsi analitik dapat diparalelkan: beberapa proses secara bersamaan dapat mengeksekusi semua pernyataan ini. Kemampuan ini membuat perhitungan menjadi lebih mudah dan efisien, sehingga meningkatkan kinerja database, skalabilitas, dan kesederhanaan. Fungsi analitik diklasifikasikan seperti yang dijelaskan pada Tabel 22-1. Tabel 22-1 Fungsi Analitik dan Kegunaannya Untuk melakukan operasi ini, fungsi analitik menambahkan beberapa elemen baru ke pemrosesan SQL. Unsur-unsur ini dibangun di atas SQL yang ada untuk memungkinkan ekspresi perhitungan yang fleksibel dan kuat. Dengan hanya beberapa pengecualian, fungsi analitik memiliki elemen baru ini. Aliran pemrosesan ditunjukkan pada Gambar 22-1. Gambar 22-1 Order Pengolahan Konsep penting yang digunakan dalam fungsi analitik adalah: Pengolahan kueri menggunakan fungsi analitik berlangsung dalam tiga tahap. Pertama, semua bergabung, WHERE. Klausa GROUP BY dan HAVING dilakukan. Kedua, himpunan hasil dibuat tersedia untuk fungsi analitik, dan semua perhitungannya terjadi. Ketiga, jika query memiliki klausa ORDER BY pada akhirnya, ORDER BY diproses untuk memungkinkan pesanan output yang tepat. Urutan pemrosesan ditunjukkan pada Gambar 22-1. Hasil setel partisi Fungsi analitik memungkinkan pengguna untuk membagi hasil query set ke dalam kelompok baris yang disebut partisi. Perhatikan bahwa istilah partisi yang digunakan dengan fungsi analitik tidak terkait dengan fitur partisi tabel. Sepanjang bab ini, istilah partisi hanya mengacu pada makna yang terkait dengan fungsi analitik. Partisi dibuat setelah kelompok didefinisikan dengan klausa GROUP BY, jadi tersedia untuk hasil agregat seperti jumlah dan rata-rata. Pembagian partisi mungkin didasarkan pada kolom atau ungkapan yang diinginkan. Kumpulan hasil query dapat dipartisi menjadi satu partisi yang memegang semua baris, beberapa partisi besar, atau banyak partisi kecil yang masing-masing hanya memiliki beberapa baris. Untuk setiap baris di partisi, Anda dapat menentukan jendela geser data. Jendela ini menentukan kisaran baris yang digunakan untuk melakukan perhitungan untuk baris saat ini. Ukuran jendela dapat didasarkan pada sejumlah fisik baris atau interval logis seperti waktu. Jendela memiliki baris awal dan baris akhir. Bergantung pada definisinya, jendela bisa bergerak pada satu atau kedua ujungnya. Misalnya, sebuah jendela yang didefinisikan untuk fungsi jumlah kumulatif akan memiliki baris mulai yang ditetapkan pada baris pertama partisi, dan baris akhir akan meluncur dari titik awal sampai ke baris terakhir partisi. Sebaliknya, jendela yang didefinisikan untuk rata-rata bergerak akan memiliki titik awal dan akhir slide sehingga mempertahankan rentang fisik atau logis konstan. Sebuah jendela dapat diatur sebesar semua baris dalam sebuah partisi atau hanya sebuah jendela geser satu baris dalam sebuah partisi. Ketika sebuah jendela berada di dekat perbatasan, fungsi mengembalikan hasil hanya untuk baris yang tersedia, daripada memberi tahu Anda bahwa hasilnya bukan yang Anda inginkan. Saat menggunakan fungsi jendela, baris saat ini disertakan selama penghitungan, jadi sebaiknya tentukan (n -1) saat Anda menangani n item. Setiap perhitungan yang dilakukan dengan fungsi analitik didasarkan pada baris saat ini dalam sebuah partisi. Baris saat ini berfungsi sebagai titik acuan menentukan awal dan akhir jendela. Misalnya, perhitungan rata-rata bergerak terpusat dapat didefinisikan dengan jendela yang menampung baris saat ini, enam baris sebelumnya, dan enam baris berikut. Ini akan menciptakan sebuah jendela geser dari 13 baris, seperti yang ditunjukkan pada Gambar 22-2. Gambar 22-2 Contoh Jendela Sliding Peringkat, Windowing, dan Fungsi Pelaporan Bagian ini mengilustrasikan fungsi analitik dasar untuk rangking, windowing, dan pelaporan. Perhitungan Regresi Linier Linier Dalam contoh ini, kita menghitung garis regresi biasa-kuadrat-terkecil yang mengekspresikan kuantitas yang terjual suatu produk sebagai fungsi linier dari daftar harga produk. Perhitungannya dikelompokkan menurut saluran penjualan. Nilai SLOPE. INTCPT. RSQR adalah kemiringan, intersep, dan koefisien determinasi garis regresi. Nilai (bilangan bulat) COUNT adalah jumlah produk di setiap saluran yang tersedia untuk kuantitas dan harga jual. Agregat Statistik Oracle menyediakan satu set fungsi statistik SQL dan paket statistik, DBMSSTATFUNCS. Bagian ini mencantumkan beberapa fungsi baru beserta sintaks dasar. Statistik Deskriptif Anda dapat menghitung statistik deskriptif berikut ini: Median dari Mode Kumpulan Data Kumpulan Data Anda dapat menghitung statistik parametrik berikut ini: Spearmans rho Koefisien Kendalls tau-b Koefisien Selain fungsi, rilis ini memiliki paket PLSQL, DBMSSTATFUNCS . Ini berisi fungsi statistik deskriptif RINGKASAN beserta fungsinya untuk mendukung pemasangan distribusi. Fungsi RINGKASAN merangkum kolom numerik tabel dengan berbagai statistik deskriptif. Fungsi distribusi lima distribusi mendukung distribusi normal, seragam, Weibull, Poisson, dan eksponensial. Agregat yang Ditetapkan Pengguna Oracle menawarkan fasilitas untuk membuat fungsi Anda sendiri, yang disebut fungsi agregat yang ditentukan pengguna. Fungsi-fungsi ini ditulis dalam bahasa pemrograman seperti PLSQL, Java, dan C, dan dapat digunakan sebagai fungsi analitik atau agregat dalam tampilan terwujud. Lihat Panduan Pengembang Cartridge Data Database Oracle untuk informasi lebih lanjut mengenai sintaks dan batasan. Kelebihan dari fungsi ini adalah: Fungsi yang sangat kompleks dapat diprogram menggunakan bahasa prosedural secara lengkap. Skalabilitas yang lebih tinggi daripada teknik lainnya saat fungsi yang ditentukan pengguna diprogram untuk pemrosesan paralel. Tipe data objek bisa diolah. Sebagai contoh sederhana dari fungsi agregat yang ditentukan pengguna, perhatikan statistik miring. Perhitungan ini mengukur jika kumpulan data memiliki distribusi miring tentang mean-nya. Ini akan memberitahu Anda jika satu ekor distribusi secara signifikan lebih besar dari yang lain. Jika Anda membuat agregat yang ditentukan pengguna yang disebut udskew dan menerapkannya pada data batas kredit pada contoh sebelumnya, pernyataan dan hasil SQL mungkin terlihat seperti ini: Sebelum membangun fungsi agregat yang ditentukan pengguna, Anda harus mempertimbangkan apakah kebutuhan Anda dapat dipenuhi. Di SQL biasa Banyak perhitungan yang kompleks dapat dilakukan secara langsung di SQL, terutama dengan menggunakan ekspresi CASE. Tinggal dengan SQL biasa akan memungkinkan pengembangan yang lebih sederhana, dan banyak operasi query sudah terlaksana dengan baik di SQL. Bahkan contoh sebelumnya, statistik miring, dapat dibuat dengan menggunakan standar, meskipun panjang, SQL. Operasi Pivoting D ata yang dikembalikan oleh query intelijen bisnis seringkali paling dapat digunakan jika disajikan dalam format crosstabular. The pivotclause dari pernyataan SELECT memungkinkan Anda menulis query crosstabulation yang memutar baris ke kolom, menggabungkan data dalam proses rotasi. Pivoting adalah teknik kunci dalam gudang data. Di dalamnya, Anda mengubah beberapa baris input ke baris yang lebih sedikit dan umumnya lebih lebar di gudang data. Saat berputar, operator agregasi diterapkan untuk setiap item dalam daftar nilai kolom pivot. Kolom pivot tidak boleh mengandung ekspresi yang sewenang-wenang. Jika Anda perlu berpaling pada ekspresi, maka Anda harus alias berekspresi dalam pandangan sebelum operasi PIVOT. Sintaks dasarnya adalah sebagai berikut: Untuk menggambarkan penggunaan pivoting, buatlah tampilan berikut sebagai dasar untuk contoh selanjutnya: Contoh: Pivoting Pernyataan berikut menggambarkan pivot tipikal pada kolom saluran: Perhatikan bahwa output telah menciptakan empat kolom alias baru. , PENJUALAN LANGSUNG. INTERNETSALES. KATALOGSALES. Dan TELESALES. Satu untuk masing-masing nilai pivot. Outputnya adalah jumlah. Jika tidak ada alias yang diberikan, judul kolomnya adalah nilai IN - list. Pivoting on Multiple Columns Anda dapat berporos pada lebih dari satu kolom. Pernyataan berikut menggambarkan pivot kolom beberapa tipikal: Perhatikan bahwa contoh ini menentukan IN - list multi-kolom dengan judul kolom yang dirancang agar sesuai dengan anggota IN - list. Pivoting: Multiple Agregat Anda dapat berporos dengan beberapa agregat, seperti ditunjukkan pada contoh berikut: Perhatikan bahwa kueri membuat judul kolom dengan menggabungkan nilai pivot (atau alias) dengan alias fungsi agregat, ditambah garis bawah. Membedakan Nulls Generasi PIVOT dari Nulls di Sumber Data Anda dapat membedakan antara nilai null yang dihasilkan dari penggunaan PIVOT dan yang ada pada data sumber. Contoh berikut menggambarkan null yang dihasilkan oleh PIVOT. Query berikut mengembalikan baris dengan 5 kolom, kolom prodid. Dan pivot menghasilkan kolom Q1. Q1COUNTTOTAL. Q2. Q2COUNTTOTAL. Untuk setiap nilai unik prodid. Q1COUNTTOTAL mengembalikan jumlah baris yang nilai qtrnya adalah Q1. Yaitu, dan Q2COUNTTOTAL mengembalikan jumlah baris yang nilai qtrnya adalah Q2. Asumsikan kita memiliki tabel penjualan2 dari struktur berikut: Dari hasilnya, kita tahu bahwa untuk produk 100, ada 2 baris penjualan untuk kuartal Q1. Dan 1 baris penjualan untuk kuartal Q2 untuk produk 200, ada 1 baris penjualan untuk kuartal Q1. Dan tidak ada baris penjualan untuk kuartal Q2. Jadi, di Q2COUNTTOTAL. Anda dapat mengidentifikasi bahwa NULLlt1gt berasal dari sebuah baris di tabel asli yang ukurannya bernilai null, sementara NULLlt2gt adalah karena tidak ada baris yang hadir dalam tabel asli untuk produk 200 pada kuartal Q2. Operasi yang Tidak Menghasilkan Sebuah unpivot tidak membalikkan operasi PIVOT. Sebagai gantinya, ia memutar data dari kolom menjadi beberapa baris. Jika Anda bekerja dengan data berporos, operasi UNPIVOT tidak dapat membalikkan agregasi yang telah dilakukan oleh PIVOT atau cara lainnya. Untuk mengilustrasikan unpivoting, pertama buat tabel yang diputar yang mencakup empat kolom, untuk perempat tahun: Isi tabel menyerupai berikut ini: Operasi UNPIVOT berikut memutar kolom seperempat baris. Untuk setiap produk, akan ada empat baris, satu untuk setiap kuartal. Perhatikan penggunaan INCLUDE NULLS dalam contoh ini. Anda juga bisa menggunakan EXCLUDE NULLS. Yang merupakan setting default. Selain itu, Anda juga dapat melakukan unpivot menggunakan dua kolom, seperti berikut ini: Wildcard dan Subquery Pivoting with XML Operations Jika Anda ingin menggunakan wildcard argument atau subquery di kolom pivoting Anda, Anda dapat melakukannya dengan sintaks XML PIVOT. Dengan XML PIVOT, output dari operasi ini benar-benar diformat XML. Contoh berikut menggambarkan menggunakan kata kunci wildcard, APAPUN. Ini menghasilkan XML yang mencakup semua nilai saluran di salesview: Perhatikan bahwa kata kunci ANY tersedia dalam operasi PIVOT hanya sebagai bagian dari operasi XML. Output ini mencakup data untuk kasus dimana saluran berada di kumpulan data. Perhatikan juga bahwa fungsi agregasi harus menentukan klausa GROUP BY untuk mengembalikan beberapa nilai, namun pivotclause tidak mengandung klausa GROUP BY eksplisit. Sebagai gantinya, pivotclause melakukan GROUP BY implisit. Contoh berikut menggambarkan menggunakan subkueri. Ini menghasilkan XML yang mencakup semua nilai saluran dan data penjualan yang sesuai dengan masing-masing saluran: Output mengolah data untuk memasukkan semua saluran yang mungkin untuk setiap produk. Data Densification untuk Pelaporan Data biasanya disimpan dalam bentuk yang jarang. Artinya, jika tidak ada nilai untuk kombinasi nilai dimensi yang diberikan, tidak ada baris yang ada di tabel fakta. Namun, Anda mungkin ingin melihat data dalam bentuk padat, dengan baris untuk semua kombinasi nilai dimensi ditampilkan meskipun tidak ada data fakta untuk mereka. Misalnya, jika produk tidak terjual selama jangka waktu tertentu, Anda mungkin masih ingin melihat produk untuk jangka waktu tersebut dengan nilai penjualan nol di sampingnya. Selain itu, perhitungan deret waktu dapat dilakukan dengan sangat mudah bila data padat sepanjang dimensi waktu. Ini karena data padat akan mengisi jumlah baris yang konsisten untuk setiap periode, yang pada gilirannya mempermudah penggunaan fungsi windowing analitik dengan offset fisik. Keragaman data adalah proses pengubahan data yang jarang menjadi bentuk yang padat. Untuk mengatasi masalah sparsity, Anda bisa menggunakan partisi outer join untuk mengisi gap dalam deret waktu atau dimensi lainnya. Bergabung seperti itu memperluas sintaks join luar konvensional dengan menerapkan outer join ke setiap partisi logical yang didefinisikan dalam query. Oracle secara logis mempartisi baris dalam query Anda berdasarkan ekspresi yang Anda tentukan di dalam PARTITION BY clause. Hasil join outer yang dipartisi adalah UNION dari outer join dari masing-masing partisi di tabel yang dipartisi secara logis dengan tabel di sisi lain join. Perhatikan bahwa Anda dapat menggunakan jenis ini untuk mengisi celah dalam dimensi apa pun, tidak hanya dimensi waktu saja. Sebagian besar contoh di sini berfokus pada dimensi waktu karena dimensi inilah yang paling sering digunakan sebagai dasar perbandingan. Partition Join Syntax Sintaks untuk partisi outer join memperluas klausa ANSI SQL JOIN dengan frase PARTITION BY diikuti oleh daftar ekspresi. Ungkapan dalam daftar menentukan kelompok dimana join luar diterapkan. Berikut ini adalah dua bentuk sintaks yang biasanya digunakan untuk partisi outer join: Perhatikan bahwa FULL OUTER JOIN tidak didukung dengan outer join yang dipartisi. Contoh Data Langka Situasi tipikal dengan dimensi yang jarang ditunjukkan pada contoh berikut, yang menghitung penjualan mingguan dan penjualan tahunan untuk produk Bounce selama minggu 20-30 pada tahun 2000 dan 2001: Dalam contoh ini, kami Akan mengharapkan 22 deret data (11 minggu masing-masing dari 2 tahun) jika datanya padat. Namun, kami hanya mendapatkan 18 baris karena minggu 25 dan 26 hilang pada tahun 2000, dan minggu ke 26 dan 28 pada tahun 2001. Mengisi Kesenjangan dalam Data Kami dapat mengambil data yang jarang dari kueri sebelumnya dan melakukan pembagian di luar bergabung dengan sekumpulan padat Data waktu Dalam query berikut, kita alias query asli kita sebagai v dan kita pilih data dari tabel kali, yang kita sebut sebagai t. Disini kita mengambil 22 baris karena tidak ada celah dalam seri. Keempat baris yang ditambahkan masing-masing memiliki 0 karena nilai Penjualan mereka diset ke 0 dengan menggunakan fungsi NVL. Perhatikan bahwa dalam query ini, kondisi WHERE ditempatkan selama berminggu-minggu antara 20 dan 30 pada tampilan inline untuk dimensi waktu. Ini diperkenalkan untuk menjaga agar hasilnya tetap kecil. Mengisi Kesenjangan dalam Dua Dimensi Data dimensi-n biasanya ditampilkan sebagai tab silang 2 dimensi padat dimensi (n - 2) halaman. Ini mengharuskan semua nilai dimensi untuk dua dimensi yang muncul di tab salib diisi. Berikut adalah contoh lain di mana kemampuan bergabung di luar partisi dapat digunakan untuk mengisi kesenjangan pada dua dimensi: Dalam kueri ini, klausa anjak subquery WITH V1 merangkum data penjualan di tingkat produk, negara, dan tahun. Hasil ini jarang terjadi, namun pengguna mungkin ingin melihat kombinasi tahun untuk setiap produk di seluruh negara. Untuk mencapai hal ini, kita mengambil setiap partisi v1 berdasarkan nilai produk dan outer join pada dimensi negara terlebih dahulu. Ini akan memberi kita semua nilai negara untuk setiap produk. Kami kemudian mengambil hasil itu dan mempartisinya pada nilai produk dan negara dan kemudian di luar bergabung pada dimensi waktu. Ini akan memberi kita semua nilai waktu untuk setiap kombinasi produk dan negara. Mengisi Kesenjangan dalam Tabel Inventaris Tabel persediaan biasanya melacak jumlah unit yang tersedia untuk berbagai produk. Tabel ini jarang: hanya menyimpan deretan produk saat ada acara. Untuk tabel penjualan, acara tersebut adalah penjualan, dan untuk tabel persediaan, acara tersebut merupakan perubahan jumlah barang yang tersedia untuk suatu produk. Misalnya, perhatikan tabel inventaris berikut: Tabel persediaan sekarang memiliki baris berikut: Untuk tujuan pelaporan, pengguna mungkin ingin melihat data inventaris ini secara berbeda. Misalnya, mereka mungkin ingin melihat semua nilai waktu untuk setiap produk. Hal ini bisa dilakukan dengan menggunakan parted outer join. Selain itu, untuk baris yang baru dimasukkan dalam periode waktu yang hilang, pengguna mungkin ingin melihat nilai jumlah kolom unit yang akan dibawa dari periode waktu yang ada. Yang terakhir dapat dilakukan dengan menggunakan fungsi analisis LASTVALUE value. Berikut adalah query dan output yang diinginkan: Query batin menghitung outer part yang dipartisi tepat waktu dalam setiap produk. Kueri dalam dumatikan data pada dimensi waktu (artinya dimensi waktu sekarang akan memiliki baris untuk setiap hari dalam seminggu). Namun, jumlah kolom ukuran akan memiliki null untuk baris yang baru ditambahkan (lihat output dalam jumlah kolom pada hasil berikut. Permintaan luar menggunakan fungsi analitik LASTVALUE. Menerapkan fungsi ini mempartisi data berdasarkan produk dan memerintahkan data pada Kolom dimensi waktu (timeid).Untuk setiap baris, fungsi menemukan nilai non-null terakhir di jendela karena opsi MENGABAIKAN NULLS yang dapat Anda gunakan dengan LASTVALUE dan FIRSTVALUE. Kita melihat output yang diinginkan dalam kolom yang berulang-ulang dalam Output berikut: Menghitung Nilai Data untuk Mengisi Sampul Contoh pada bagian sebelumnya menggambarkan bagaimana menggunakan partisi outer join untuk mengisi gap dalam satu atau beberapa dimensi. Namun, set hasil yang dihasilkan oleh outer join yang dipartisi memiliki nilai null untuk kolom yang tidak termasuk dalam Daftar PARTITION BY Biasanya, ini adalah kolom ukuran. Pengguna dapat menggunakan fungsi SQL analitik untuk menggantikan nilai null tersebut dengan nilai non-null. Misalnya, q berikut Uery menghitung total bulanan untuk produk kartu memori 64MB dan DVD-R Discs (ID produk 122 dan 136) untuk tahun 2000. Menggunakan partisi luar bergabung untuk memenuhi data selama berbulan-bulan. Untuk bulan-bulan yang hilang, kemudian menggunakan fungsi SQL analitik AVG untuk menghitung penjualan dan unit menjadi rata-rata bulan ketika produk terjual. Jika bekerja di SQLPlus, dua perintah berikut membungkus judul kolom untuk keterbacaan hasil yang lebih besar: Perhitungan Seri Waktu pada Data Densifikasi Densifikatio n tidak hanya untuk tujuan pelaporan. Ini juga memungkinkan beberapa jenis perhitungan, terutama, perhitungan deret waktu. Perhitungan deret waktu lebih mudah bila data padat sepanjang dimensi waktu. Data padat memiliki jumlah baris yang konsisten untuk setiap periode waktu yang pada gilirannya mempermudah penggunaan fungsi jendela analitik dengan offset fisik. Sebagai ilustrasi, pertama mari kita ambil contoh pada Mengisi Kesenjangan dalam Data. Dan memungkinkan menambahkan fungsi analitik ke kueri tersebut. Dalam versi yang disempurnakan berikut ini, kami menghitung penjualan tahunan yang selalu ketinggalan tahun bersamaan dengan penjualan mingguan. Nilai NULL yang disisipkan di luar partisi menyisipkan dalam membuat rangkaian waktu padat ditangani dengan cara biasa: fungsi SUM memperlakukannya sebagai 0s. Perbandingan Periode-ke-Periode untuk Satu Tingkat Waktu: Contoh Bagaimana kita menggunakan fitur ini untuk membandingkan nilai sepanjang periode waktu Secara khusus, bagaimana kita menghitung perbandingan penjualan tahun ke tahun di tingkat minggu Permintaan berikut kembali pada baris yang sama. , Untuk setiap produk, penjualan tahunan untuk setiap minggu tahun 2001 dengan tahun 2000. Perhatikan bahwa dalam contoh ini kita memulai dengan klausa WITH. Ini meningkatkan keterbacaan query dan memungkinkan kita fokus pada outer join yang dipartisi. Jika bekerja di SQLPlus, perintah berikut membungkus judul kolom untuk keterbacaan hasil yang lebih besar: Pada klausa FROM dari tampilan inline dline. Kami menggunakan gabungan luar yang terpisahkan dari tampilan agregat v dan tampilan waktu t untuk mengisi kesenjangan dalam data penjualan sepanjang dimensi waktu. Output dari outer join yang dipartisi kemudian diproses oleh fungsi analisis SUM. OVER untuk menghitung penjualan tahunan mingguan (kolom weeklyytdsales). Dengan demikian, pandangan densesales menghitung data penjualan tahun-to-date setiap minggu, termasuk yang hilang dalam tampilan agregat. Tampilan tahun yang inline kemudian menghitung penjualan tahun lalu yang lalu setiap minggu dengan menggunakan fungsi LAG. Fungsi LAG yang berlabel mingguanmenerbitkanpopulasi menentukan klausa PARTISI BY yang memasangkan baris untuk minggu yang sama tahun 2000 dan 2001 menjadi satu partisi tunggal. Kami kemudian melewati offset 1 ke fungsi LAG untuk mendapatkan penjualan tahunan hingga tahun sebelumnya. Blok kuota paling luar memilih data dari tahun ke tahun dengan kondisi pada tahun 2001. dan dengan demikian kueri kembali, untuk setiap produk, mingguannya Penjualan tahunan dalam minggu-minggu tertentu tahun 2001 dan 2000. Perbandingan Periode-ke-Periode untuk Tingkat Waktu Beberapa Kali: Contoh Sementara contoh sebelumnya menunjukkan kepada kita cara untuk membuat perbandingan untuk satu tingkat waktu, akan lebih banyak lagi. Berguna untuk menangani beberapa tingkat waktu dalam satu kueri. Misalnya, kita bisa membandingkan penjualan versus periode sebelumnya di tingkat tahun, kuartal, bulan dan hari. Bagaimana kita bisa membuat kueri yang melakukan perbandingan tahun-tahun ke tahun dari semua tingkat hirarki waktu Kami akan melakukan beberapa langkah untuk melakukan tugas ini. Tujuannya adalah query tunggal dengan perbandingan pada hari, minggu, bulan, kuartal, dan tingkat tahun. Langkah-langkahnya adalah sebagai berikut: Kita akan membuat tampilan yang disebut cubeprodtime. Yang memegang sekumpulan penjualan hierarki hierarki sepanjang waktu dan produk. Kemudian kita akan membuat tampilan dimensi waktu untuk digunakan sebagai ujung kubus. Tepi waktu, yang memegang satu set lengkap tanggal, akan dipartisi luar bergabung dengan data yang jarang di lihat cubeprodtime. Akhirnya, untuk performa maksimal, kita akan menciptakan tampilan terwujud, mvprodtime. Dibangun dengan menggunakan definisi yang sama seperti cubeprodtime. Untuk informasi lebih lanjut mengenai batu hierarki, lihat Bab 21, SQL untuk Penggabungan di Gudang Data. Tampilan terwujud didefinisikan pada Langkah 1 di bagian berikut. Langkah 1 Buat tampilan kotak hierarkis Tampilan terwujud yang ditunjukkan di bawah ini mungkin sudah ada di sistem Anda jika tidak, buat sekarang. Jika Anda harus membuatnya, perhatikan bahwa kami membatasi kueri hanya pada dua produk agar waktu pemrosesan tetap singkat: Karena pandangan ini terbatas pada dua produk, ia mengembalikan lebih dari 2200 baris. Perhatikan bahwa kolom HierarchicalTime berisi representasi string waktu dari semua level hirarki waktu. Ekspresi CASE yang digunakan untuk kolom HierarchicalTime menambahkan penanda (0, 1.) ke setiap string tanggal untuk menunjukkan tingkat waktu nilai. A 0 mewakili tingkat tahun, 1 adalah perempat, 2 bulan, dan 3 adalah hari. Perhatikan bahwa klausa GROUP BY adalah ROLLUP yang digabungkan yang menentukan hierarki rollup untuk dimensi waktu dan produk. Klausa GROUP BY adalah apa yang menentukan isi hierarki. Langkah 2 Buat tampilan edgetime, yang merupakan satu set lengkap nilai tanggal edgetime adalah sumber untuk mengisi celah waktu di dalam kotak hirarki menggunakan join luar yang terpartisi. Kolom HierarchicalTime in edgetime akan digunakan dalam sebuah partisi yang dipartisi dengan kolom HierarchicalTime dalam tampilan cubeprodtime. Pernyataan berikut mendefinisikan edgetime: Langkah 3 Buat mvprodtime tampilan terwujud untuk mendukung kinerja lebih cepat Definisi tampilan terwujud adalah duplikat dari tampilan cubeprodtime yang didefinisikan sebelumnya. Karena itu adalah query duplikat, referensi tentang cubeprodtime akan ditulis ulang untuk menggunakan tampilan mvprodtime terwujud. Hal berikut terwujud mungkin sudah ada di sistem Anda jika tidak, ciptakan sekarang. Jika Anda harus membuatnya, perhatikan bahwa kami membatasi kueri hanya dua produk agar waktu pemrosesan tetap singkat. Langkah 4 Buat query perbandingan Sekarang kita telah mengatur tahap untuk query perbandingan kita. Kita dapat memperoleh perhitungan perbandingan dari periode ke periode pada semua tingkat waktu. Hal ini membutuhkan penerapan fungsi analitik ke sebuah kotak hirarkis dengan data padat sepanjang dimensi waktu. Beberapa perhitungan yang dapat kita capai untuk setiap level waktu adalah: Jumlah penjualan untuk periode sebelumnya di semua tingkat waktu. Varians penjualan selama periode sebelumnya. Jumlah penjualan pada periode yang sama tahun lalu di semua level waktu. Varians penjualan pada periode yang sama tahun lalu. Contoh berikut melakukan keempat perhitungan ini. Ini menggunakan partisi luar yang dipartisi dari tampilan cubeprodtime dan edgetime untuk membuat tampilan inline dari data padat yang disebut densecubeprodtime. Permintaan kemudian menggunakan fungsi LAG dengan cara yang sama seperti contoh tingkat satu sebelumnya. Klausa WHERE luar menentukan waktu pada tiga tingkat: pada bulan Agustus 2001, keseluruhan bulan, dan keseluruhan kuartal ketiga tahun 2001. Perhatikan bahwa dua baris terakhir dari hasil tersebut berisi tingkat bulan dan agregasi tingkat triwulan. Perhatikan bahwa untuk membuat Hasilnya lebih mudah dibaca jika Anda menggunakan SQLPlus, judul kolom harus disesuaikan dengan perintah berikut. Perintah akan melipat judul kolom untuk mengurangi garis panjang: Berikut adalah query yang membandingkan penjualan saat ini dengan penjualan sebelumnya dan tahun yang lalu: Fungsi LAG pertama (salespriorperiod) mempartisi data pada gidp. kucing. Subcat. melecut. Gidt dan memerintahkan baris pada semua kolom dimensi waktu. Ini mendapatkan nilai penjualan dari periode sebelumnya dengan melewatkan offset 1. Partisi fungsi LAG kedua (salessameperiodprioryear) mengelompokkan data pada kolom tambahan qtrnum. Monnum Dan daynum dan memesannya pada tahun sebelumnya sehingga, dengan offset 1, dapat menghitung penjualan tahun lalu untuk periode yang sama. Klausul SELECT terluar menghitung varians. Membuat Anggota Custom dalam Dimensi: Contoh Dalam banyak tugas SQL analitis, akan sangat membantu untuk mendefinisikan anggota kustom dalam dimensi. Misalnya, Anda mungkin menentukan periode waktu khusus untuk analisis. Anda dapat menggunakan outer outer yang dipartisi untuk sementara menambahkan anggota ke dimensi. Perhatikan bahwa klausa MODEL SQL baru cocok untuk membuat skenario yang lebih kompleks yang melibatkan anggota baru dalam dimensi. Lihat Bab 23, SQL untuk Pemodelan untuk informasi lebih lanjut tentang topik ini. Sebagai contoh sebuah tugas, bagaimana jika kita ingin mendefinisikan anggota baru untuk dimensi waktu kita? Kita ingin membuat level anggota ke 13 dalam dimensi waktu kita. Bulan ke 13 ini didefinisikan sebagai penjumlahan penjualan setiap produk pada bulan pertama setiap kuartal tahun 2001. Solusinya memiliki dua langkah. Perhatikan bahwa kita akan membangun solusi ini dengan menggunakan tampilan dan tabel yang dibuat pada contoh sebelumnya. Dua langkah diperlukan. Pertama, buat tampilan dengan anggota baru yang ditambahkan ke dimensi yang sesuai. Tampilan menggunakan operasi UNION ALL untuk menambahkan anggota baru. Untuk query menggunakan anggota kustom, gunakan ekspresi CASE dan join outer yang dipartisi. Anggota baru kami untuk dimensi waktu dibuat dengan tampilan berikut: Dalam pernyataan ini, view timec didefinisikan dengan melakukan UNION ALL dari tampilan edgetime (didefinisikan pada contoh sebelumnya) dan 13 bulan yang ditentukan pengguna. Nilai gidt 8 dipilih untuk membedakan anggota custom dari anggota standar. The UNION ALL specifies the attributes for a 13th month member by doing a SELECT from the DUAL table. Note that the grouping id, column gidt. is set to 8, and the quarter number is set to 5. Then, the second step is to use an inline view of the query to perform a partitioned outer join of cubeprodtime with timec. This step creates sales data for the 13th month at each level of product aggregation. In the main query, the analytic function SUM is used with a CASE expression to compute the 13th month, which is defined as the summation of the first months sales of each quarter. The SUM function uses a CASE to limit the data to months 1, 4, 7, and 10 within each year. Due to the tiny data set, with just 2 products, the rollup values of the results are necessarily repetitions of lower level aggregations. For more realistic set of rollup values, you can include more products from the Game Console and Y Box Games subcategories in the underlying materialized view. Miscellaneous Analysis and Reporting Capabilities This section illustrates the following additional analytic capabilities: WIDTHBUCKET Function For a given expression, the WIDTHBUCKET function returns the bucket number that the result of this expression will be assigned after it is evaluated. You can generate equiwidth histograms with this function. Equiwidth histograms divide data sets into buckets whose interval size (highest value to lowest value) is equal. The number of rows held by each bucket will vary. A related function, NTILE. creates equiheight buckets. Equiwidth histograms can be generated only for numeric, date or datetime types. So the first three parameters should be all numeric expressions or all date expressions. Other types of expressions are not allowed. If the first parameter is NULL. the result is NULL. If the second or the third parameter is NULL. an error message is returned, as a NULL value cannot denote any end point (or any point) for a range in a date or numeric value dimension. The last parameter (number of buckets) should be a numeric expression that evaluates to a positive integer value 0, NULL. or a negative value will result in an error. Buckets are numbered from 0 to ( n 1). Bucket 0 holds the count of values less than the minimum. Bucket( n 1) holds the count of values greater than or equal to the maximum specified value. WIDTHBUCKET Syntax The WIDTHBUCKET takes four expressions as parameters. The first parameter is the expression that the equiwidth histogram is for. The second and third parameters are expressions that denote the end points of the acceptable range for the first parameter. The fourth parameter denotes the number of buckets. Consider the following data from table customers. that shows the credit limits of 17 customers. This data is gathered in the query shown in Example 22-24 . In the table customers. the column custcreditlimit contains values between 1500 and 15000, and we can assign the values to four equiwidth buckets, numbered from 1 to 4, by using WIDTHBUCKET (custcreditlimit, 0, 20000, 4). Ideally each bucket is a closed-open interval of the real number line, for example, bucket number 2 is assigned to scores between 5000.0000 and 9999.9999. sometimes denoted 5000, 10000) to indicate that 5,000 is included in the interval and 10,000 is excluded. To accommodate values outside the range 0, 20,000), values less than 0 are assigned to a designated underflow bucket which is numbered 0, and values greater than or equal to 20,000 are assigned to a designated overflow bucket which is numbered 5 (num buckets 1 in general). See Figure 22-3 for a graphical illustration of how the buckets are assigned. Figure 22-3 Bucket Assignments You can specify the bounds in the reverse order, for example, WIDTHBUCKET ( custcreditlimit. 20000. 0. 4 ). When the bounds are reversed, the buckets will be open-closed intervals. In this example, bucket number 1 is ( 15000,20000 , bucket number 2 is ( 10000,15000 , and bucket number 4, is ( 0 ,5000 . The overflow bucket will be numbered 0 ( 20000. infinity ), and the underflow bucket will be numbered 5 (- infinity. 0 . It is an error if the bucket count parameter is 0 or negative. Example 22-24 WIDTHBUCKET The followin g query shows the bucket numbers for the credit limits in the customers table for both cases where the boundaries are specified in regular or reverse order. We use a range of 0 to 20,000. Linear Algebra Linear algebra is a branch of mathematics with a wide range of practical applications. Many areas have tasks that can be expressed using linear algebra, and here are some examples from several fields: statistics (multiple linear regression and principle components analysis), data mining (clustering and classification), bioinformatics (analysis of microarray data), operations research (supply chain and other optimization problems), econometrics (a nalysis of consumer demand data), and finance (asset allocation problems). Various libraries for linear algebra are freely available for anyone to use. Oracles UTLNLA package exposes matrix PLSQL data types and wrapper PLSQL subprograms for two of the most popular and robust of these libraries, BLAS and LAPACK. Linear algebra depends on matrix manipulation. Performing matrix manipulation in PLSQL in the past required inventing a matrix representation based on PLSQLs native data types and then writing matrix manipulation routines from scratch. This required substantial programming effort and the performance of the resulting implementation was limited. If developers chose to send data to external packages for processing rather than create their own routines, data transfer back and forth could be time consuming. Using the UTLNLA package lets data stay within Oracle, removes the programming effort, and delivers a fast implementation. Example 22-25 Linear Algebra Here is an example of how Oracles linear algebra support could be used for business analysis. It invokes a multiple linear regression application built using the UTLNLA package. The multiple regression application is implemented in an object called OLSRegression. Note that sample files for the OLS Regression object can be found in ORACLEHOMEplsqldemo . Consider the scenario of a retailer analyzing the effectiveness of its marketing program. Each of its stores allocates its marketing budget over the following possible programs: media advertisements ( media ), promotions ( promo ), discount coupons ( disct ), and direct mailers ( dmail ). The regression analysis builds a linear relationship between the amount of sales that an average store has in a given year ( sales ) and the spending on the four components of the marketing program. Suppose that the marketing data is stored in the following table: Then you can build the following sales-marketing linear model using coefficients: This model can be implemented as the following view, which refers to the OLS regression object: Using this view, a marketing program manager can perform an analysis such as Is this sales-marketing model reasonable for year 2004 data That is, is the multiple-correlation greater than some acceptable value, say, 0.9 The SQL for such a query might be as follows: You could also solve questions such as What is the expected base-line sales revenue of a store without any marketing programs in 2003 or Which component of the marketing program was the most effective in 2004 That is, a dollar increase in which program produced the greatest expected increase in sales See Oracle Database PLSQL Packages and Types Reference for further information regarding the use of the UTLNLA package and linear algebra. CASE Expressions Oracle now supports simple and searched CASE statements. CASE statements are similar in purpose to the DECODE statement, but they offer more flexibility and logical power. They are also easier to read than traditional DECODE statements, and offer better performance as well. They are commonly used when breaking categories into buckets like age (for example, 20-29, 30-39, and so on). The syntax for simple CASE statements is: Simple CASE expressions test if the expr value equals the comparisonexpr . The syntax for searched CASE statements is: You can use any kind of condition in a searched CASE expression, not just an equality test. You can specify only 65,535 arguments and each WHEN. THEN pair counts as two arguments. To avoid exceeding this limit, you can nest CASE expressions so that the returnexpr itself is a CASE expression. Example 22-26 CASE Suppose you wanted to find the average salary of all employees in the company. If an employees salary is less than 2000, you want the query to use 2000 instead. Without a CASE statement, you might choose to write this query as follows: Note that this runs against the hr sample schema. In this, foo is a function that returns its input if the input is greater than 2000, and returns 2000 otherwise. The query has performance implications because it needs to invoke a function for each row. Writing custom functions can also add to the development load. Using CASE expressions in the database without PLSQL, this query can be rewritten as: Using a CASE expression lets you avoid developing custom functions and can also perform faster. Example 22-27 CASE for Aggregating Independent Subsets Using CASE inside aggregate functions is a convenient way to perform aggregates on multiple subsets of data when a plain GROUP BY will not suffice. For instance, the preceding example could have included multiple AVG columns in its SELECT list, each with its own CASE expression. We might have had a query find the average salary for all employees in the salary ranges 0-2000 and 2000-5000. It would look like: Although this query places the aggregates of independent subsets data into separate columns, by adding a CASE expression to the GROUP BY clause we can display the aggregates as the rows of a single column. The next section shows the flexibility of this approach with two approaches to creating histograms with CASE . Creating Histograms You can use the CASE statement when you want to obtain histograms with user-defined buckets (both in number of buckets and width of each bucket). The following are two examples of histograms created with CASE statements. In the first example, the histogram totals are shown in multiple columns and a single row is returned. In the second example, the histogram is shown with a label column and a single column for totals, and multiple rows are returned. Example 22-28 Histogram Example 1 Example 22-29 Histogram Example 2 Frequent Itemsets Instead of counting how often a given event occurs (for example, how often someone has purchased milk at the grocery), you may find it useful to count how often multiple events occur together (for example, how often someone has purchased both milk and cereal together at the grocery store). You can count these multiple events using what is called a frequent itemset, which is, as the name implies, a set of items. Some examples of itemsets could be all of the products that a given customer purchased in a single trip to the grocery store (commonly called a market basket), the web pages that a user accessed in a single session, or the financial services that a given customer utilizes. The practical motivation for using a frequent itemset is to find those itemsets that occur most often. If you analyze a grocery stores point-of-sale data, you might, for example, discover that milk and bananas are the most commonly bought pair of items. Frequent itemsets have thus been used in business intelligence environments for many years, with the most common one being for market basket analysis in the retail industry. Frequent itemset calculations are integrated with the database, operating on top of relational tables and accessed through SQL. This integration provides the following key benefits: Applications that previously relied on frequent itemset operations now benefit from significantly improved performance as well as simpler implementation. SQL-based applications that did not previously use frequent itemsets can now be easily extended to take advantage of this functionality. Frequent itemsets analysis is performed with the PLSQL package DBMSFREQUENTITEMSETS. See Oracle Database PLSQL Packages and Types Reference for more information. In addition, there is an example of frequent itemset usage in Frequent itemsets . Scripting on this page enhances content navigation, but does not change the content in any way.

No comments:

Post a Comment