🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

20220818170811_ISYS6332-LN4-R1.pdf

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

LECTURE NOTES ISYS6332 Data Warehouse Week ke - 4 Querying Data Warehouses ISYS6507 – Testing and System Implementation LEARNING OUTCOMES LO1: Describe data warehouse concept on business organization. LO1 : Mahasiswa diharapkan mampu mendeskripsikan konsep data warehouse dalam organisasi bisni...

LECTURE NOTES ISYS6332 Data Warehouse Week ke - 4 Querying Data Warehouses ISYS6507 – Testing and System Implementation LEARNING OUTCOMES LO1: Describe data warehouse concept on business organization. LO1 : Mahasiswa diharapkan mampu mendeskripsikan konsep data warehouse dalam organisasi bisnis OUTLINE MATERI : 1. Introduction to MDX 2. Querying the Northwind Cube in MDX 3. Querying the Northwind Data Warehouse in SQL 4. Comparison of MDX and SQL ISI MATERI A. Introduction to MDX Set dan Tupel Dua konsep dasar dalam MDX adalah tuple dan set. Secara intuitif, tupel mengidentifikasi sel tunggal dalam kubus multidimensi. Sebuah tupel didefinisikan dengan menyatakan satu anggota dari satu atau beberapa dimensi kubus. Gambar 4.1. Sebuah kubus tiga dimensi sederhana dengan satu measure Perhatikan, misalnya, kubus yang diberikan pada Gambar 4.1. Sel di sudut kiri atas dengan nilai 21 sesuai dengan penjualan minuman di Paris pada kuartal pertama. Untuk mengidentifikasi sel tersebut, kita hanya perlu memberikan koordinat setiap dimensi sebagai berikut: (Product.Category.Beverages,Time.Quarter.Q1, Customer.City.Paris) Karena tupel menunjuk ke satu sel, maka setiap anggota dalam tupel harus memiliki dimensi yang berbeda. Himpunan/ set adalah kumpulan tupel yang didefinisikan menggunakan dimensi yang sama. Misalnya, himpunan/set berikut menunjuk ke sel sebelumnya dengan nilai 21 dan sel di belakangnya dengan nilai 12. Perlu dicatat bahwa satu set mungkin memiliki satu atau bahkan nol tupel. {(Product.Category.Beverages,Time.Quarter.Q1,Customer.City.Paris ) (Product.Category.Beverages, Time.Quarter.Q1,Customer.City.Lyon) } Mari kita lihat sekarang bagaimana tupel berinteraksi dengan hierarki. Misalkan dalam kubus, kita memiliki hierarki dalam dimensi Customer dengan level Customer, City, State,dan Country. Dalam hal ini, tupel berikut menggunakan anggota gabungan/aggregate gabungan Prancis dan karena itu menunjuk ke sel tunggal yang menyimpan nilai total penjualan minuman di Prancis pada kuartal pertama. (Customer.Country.France, Time.Quarter.Q1) Product.Category.Beverages, Di MDX, ukuran bertindak seperti dimensi. Misalkan dalam kubus kita memiliki tiga ukuran UnitPrice, Discount,dan SalesAmount. Dalam hal ini, dimensi measure/Ukuran, yang ada di setiap kubus, berisi tiga anggota, dan dengan demikian, kita dapat menentukan ukuran yang kita inginkan seperti pada tupel berikut: (Customer.Country.France, Product.Category.Beverages, Time.Quarter.Q1, Measures.SalesAmount) Jika ukuran tidak ditentukan, maka ukuran default akan digunakan. Basic Query Sintaks kueri MDX secara umum adalah sebagai berikut: SELECT < axis specification > FROM <cube > [WHERE< slicer specification > ] Spesifikasi sumbu/ axis specification menyatakan sumbu kueri serta anggota yang dipilih untuk masing-masing sumbu ini. Slicer specification pada klausa WHERE adalah opsional. Jika tidak ditentukan, kueri mengembalikan ukuran default untuk kubus. Kecuali jika kita ingin menampilkan dimensi Measures, sebagian besar kueri memiliki slicer specification. Bentuk paling sederhana dari spesifikasi sumbu terdiri dari mengambil bagianbagian dari dimensi yang diperlukan, termasuk yang dari dimensi Measures spesial, sebagai berikut: SELECT [Measures].MEMBERS ON COLUMNS, [Customer].[Country].MEMBERS ON ROWS FROM Sales Contoh penggunaan slicing : SELECT Measures.MEMBERS ON COLUMNS, [Order Date].Year.MEMBERS ON ROWS FROM Sales WHERE (Customer.Country.Belgium) Calculated members and name set Calculated member digunakan untuk mendefinisikan anggota baru dalam suatu dimensi atau ukuran/measure baru. Ini didefinisikan menggunakan klausa berikut di depan pernyataan SELECT: WITH MEMBER Parent.MemberName AS < expression > di mana Parent mengacu pada induk dari anggota terhitung baru dan MemberName adalah namanya. Demikian pula, name set digunakan untuk mendefinisikan set baru sebagai berikut: WITH SET SetName AS < expression > Penggunaan paling umum dari calculated members adalah untuk menentukan ukuran baru yang menghubungkan ukuran yang sudah ditentukan. Misalnya, ukuran yang menghitung persentase keuntungan penjualan dapat didefinisikan sebagai berikut: WITH MEMBER Measures.Profit% AS (Measures.[Sales Amount] - Measures.[Freight]) / (Measures.[Sales Amount]), FORMAT STRING = '#0.00%' SELECT { [Sales Amount], Freight, Profit% } ON COLUMNS, Customer.Country ON ROWS FROM Sales Hasil querynya adalah sebagai berikut: Gambar 4.2. Hasil Query Calculted Members Dalam kueri berikut, kami mendefinisikan satu set bernama Nordic Countries yang terdiri dari negara Denmark, Finlandia, Norwegia, dan Swedia: WITH SET [Nordic Countries] AS { Customer.Country.Denmark, Customer.Country.Finland, Customer.Country.Norway, Customer.Country.Sweden } SELECT Measures.MEMBERS ON COLUMNS, [Nordic Countries] ON ROWS FROM Sales Hasil dari queri tersebut dapat dilihat pada gambar 4.3. berikut. Gambar 4.3. Hasil kueri Name set Relative Navigation Seringkali perlu untuk menghubungkan nilai seorang anggota dengan nilai anggota lain dalam suatu hierarki. MDX memiliki banyak metode yang dapat diterapkan pada anggota untuk melintasi hierarki, yang paling umum adalah PREVMEMBER, NEXTMEMBER, CURRENTMEMBER, PARENT, FIRSTCHILD, dan LASTCHILD. Misalkan kita ingin menghitung penjualan anggota hierarki Geografi sebagai persentase dari penjualan induknya, seperti yang ditunjukkan dalam kueri berikut: WITH MEMBER Measures.[Percentage Sales] AS (Measures.[Sales Amount], Customer.Geography.CURRENTMEMBER) / (Measures.[Sales Amount], Customer.Geography.CURRENTMEMBER.PARENT), FORMAT STRING = '#0.00%' SELECT { Measures.[Sales Amount], Measures.[Percentage Sales] } ON COLUMNS, DESCENDANTS(Customer.Europe, Customer.Country, SELF AND BEFORE) ON ROWS FROM Sales Dalam klausa WITH, fungsi CURRENTMEMBER mengembalikan anggota saat ini sepanjang dimensi selama iterasi, sedangkan fungsi PARENT mengembalikan induk dari anggota. Dalam klausa SELECT, langkah-langkah untuk negara-negara Eropa ditampilkan. Ekspresi yang mendefinisikan anggota yang terhitung yang disingkat sebagai berikut: (Measures.[Sales Amount]) / (Measures.[Sales Amount], Customer.Geography.CURRENTMEMBER.PARENT) di mana anggota hierarki saat ini akan digunakan secara default jika tidak ditentukan. Hasil dari query tersebut adalah sebagai berikut: Gambar 4.4. Hasil Query Relative Navigation Time Series Analisis periode waktu/ time series analysis merupakan komponen penting dari aplikasi intelijen bisnis. Misalnya, seseorang ingin memeriksa penjualan satu bulan atau kuartal dibandingkan dengan bulan atau kuartal yang sama tahun lalu. MDX menyediakan serangkaian fungsi deret waktu yang kuat untuk analisis time series/periode waktu. Sementara penggunaan yang paling umum adalah dengan dimensi waktu, kebanyakan dari mereka juga dapat digunakan dengan dimensi lain. Fungsi PARALLELPERIOD digunakan untuk membandingkan nilai anggota tertentu dengan nilai anggota dalam posisi relatif yang sama pada periode sebelumnya. Fungsi OPENINGPERIOD dan CLOSINGPERIOD masing-masing mengembalikan first atau last sibling di antara descendant members pada tingkat tertentu. Fungsi PERIODSTODATE mengembalikan sekumpulan periode (anggota) dari level tertentu yang dimulai dengan periode pertama dan diakhiri dengan member tertentu. Contoh : WITH MEMBER Measures.YTDSales AS SUM(PERIODSTODATE([Order Date].Calendar.Year, [Order Date].Calendar.CURRENTMEMBER), Measures.[Sales Amount]) MEMBER Measures.QTDSales AS SUM(PERIODSTODATE([Order Date].Calendar.Quarter, [Order Date].Calendar.CURRENTMEMBER), Measures.[Sales Amount]) SELECT { Measures.[Sales Amount], Measures.YTDSales, Measures.QTDSales } ON COLUMNS, [Order Date].Calendar.Month.MEMBERS ON ROWS FROM Sales Hasil Query : Gambar 4.5. Hasil Query Time Series Filtering Seperti namanya, pemfilteran digunakan untuk mengurangi jumlah axis member yang ditampilkan. Ini dikontraskan dengan pengirisan, sebagaimana ditentukan dalam klausa WHERE, karena pengirisan tidak mempengaruhi pemilihan axix member, melainkan nilai-nilai yang masuk ke dalamnya. Fungsi FILTER dapat digunakan untuk penyaringan yang lebih spesifik. Fungsi ini memfilter satu set menurut kondisi tertentu. Sebagai contoh, kueri berikut menunjukkan pelanggan mana yang pada tahun 1997 memiliki margin keuntungan di bawah rata-rata negara bagian: WITH MEMBER Measures.[Profit%] AS (Measures.[Sales Amount] - Measures.[Freight]) / (Measures.[Sales Amount]), FORMAT STRING = '#0.00%' MEMBER Measures.[Profit%City] AS (Measures.[Profit%], Customer.Geography.CURRENTMEMBER.PARENT), FORMAT STRING = '#0.00%' SELECT { Measures.[Sales Amount], Measures.[Freight], Measures.[Net Sales], Measures.[Profit%], Measures.[Profit%City] } ON COLUMNS, FILTER(NONEMPTY(Customer.Customer.MEMBERS), (Measures.[Profit%]) < (Measures.[Profit%City])) ON ROWS FROM Sales WHERE [Order Date].Calendar.[1997] Hasil kueri tersebut adalah : Gambar 4.6. Hasil Query Filtering Sorting Pada cube, seluruh anggota yang berada pada dimensi memiliki hirarki urutan: SELECT Measures.[Sales Amount] ON COLUMNS, NON EMPTY GENERATE( ORDER( Customer.Geography.Continent.ALLMEMBERS, Customer.Geography.CURRENTMEMBER.NAME, BASC ), ORDER( { Customer.Geography.CURRENTMEMBER } * Product.Categories.Category.ALLMEMBERS, Product.Categories.CURRENTMEMBER.NAME, BASC ) ) ON ROWS FROM Sales Gambar 4.7. Hasil Query Sorting Top and bottom analysis Ketika menampilkan informasi seperti kota dengan penjualan terbaik yang berdasarkan jumlah penjualan, seperti biasa kebutuhan untuk membatasi query dalam menampilkan 3 terbaik SELECT Measures.[Sales Amount] ON COLUMNS, { TOPPERCENT(Customer.Geography.City.MEMBERS, 30, Measures.[Sales Amount]), Customer.Geography.[All] } ON ROWS FROM Sales Gambar 4.8. Hasil Query Top B. Querying the Northwind Cube in MDX Contoh kueri dalam MDX untuk menghitung pertumbuhan penjualan bulanan per produk, yaitu total penjualan per produk dibandingkan dengan bulan sebelumnya. WITH MEMBER Measures.[Previous Month] AS (Measures.[Sales Amount], [Order Date].Calendar.CURRENTMEMBER.PREVMEMBER), FORMAT STRING = '$###,##0.00' MEMBER Measures.[Sales Growth] AS (Measures.[Sales Amount]) - (Measures.[Previous Month]), FORMAT STRING = '$###,##0.00; $-###,##0.00' SELECT { Measures.[Sales Amount], Measures.[Previous Month], Measures.[Sales Growth] } ON COLUMNS, NON EMPTY ORDER(Product.Categories.Product.MEMBERS, Product.Categories.CURRENTMEMBER.NAME, BASC) * [Order Date].Calendar.Month.MEMBERS ON ROWS FROM Sales Dalam kueri ini, kami melakukan penggabungan silang dimensi Produk dan Tanggal Pemesanan untuk menampilkan produk dan bulan pada axis row. Calculated Measured PREVIOUS MONTH menghitung jumlah penjualan bulan sebelumnya berdasarkan kategori dan bulan saat ini, sedangkan Calculated Measured Pertumbuhan Penjualan menghitung selisih jumlah penjualan bulan ini dan bulan sebelumnya. Hasil kueri ini adalah sebagai berikut : Gambar 4.7. Hasil Kueri Di sini, kami memanfaatkan hubungan banyak-ke-banyak antara karyawan dan kota melalui wilayah tabel wilayah. Kami berasumsi bahwa kami menggunakan Layanan Analisis, dan dengan demikian, kami menggunakan ukuran Hitungan Wilayah yang secara otomatis ditambahkan ke setiap ukuran saat dibuat, dengan melakukan gabungan silang yang memperoleh status yang terkait dengan karyawan saat ini dan menerapkan DISTINCTCOUNT ke hasilnya, untuk menghitung jumlah status untuk karyawan tersebut. Perhatikan bahwa pendekatan serupa dapat digunakan untuk mendapatkan jumlah kota jika ukuran Territories Count tidak ada dalam kubus. Akhirnya, klausa SELECT menampilkan ukuran. WITH MEMBER NoCities AS Measures.[Territories Count] MEMBER NoStates AS DISTINCTCOUNT(Employee.[Full Name].CURRENTMEMBER * City.Geography.State.MEMBERS) SELECT { Measures.[Sales Amount], Measures.NoCities, Measures.NoStates } ON COLUMNS, Employee.[Full Name].CHILDREN ON ROWS FROM Sales Gambar 4.7. Hasil Kueri DISTINCTCOUNT C. Comparison of MDX and SQL Sepintas, sintaks kedua bahasa tampak serupa. Seperti yang telah kami tunjukkan, fungsi kedua bahasa juga serupa. Memang, kami mengungkapkan kumpulan kueri yang sama dalam kedua bahasa. Namun, ada beberapa perbedaan mendasar antara SQL dan MDX yang akan kita bahas selanjutnya. Perbandingan antara MDX dan SQL dapat dilihat pada table 4.1. berikut ini. Tabel 4.1. Perbandingan MDX dan SQL MDX Advantages • • SQL Pemodelan data: definisi • Basis pengguna yang dimensi, hierarki, measure besar group, dari berbagai sumber • Semantik data mudah dipahami Navigasi sederhana dalam kueri yang dimensi waktu dan hierarki • Ekspresi yang • atau tabel 2D sering • yang digunakan • Cepat, mudah divisualisasikan: skalar relatif sederhana untuk permintaan bisnis Hasil Berbagai cara menghubungkan karena tabel: gabungan, tabel turunan, adanya agregasi kueri berkorelasi, ekspresi tabel umum, dll. Disadvantages • Upaya ekstra mendesain • untuk • kubus dan secara menyiapkan agregasi eksplisit di dalam kueri Kurva belajar yang sulit: • Terkadang memanipulasi tidak ruang n- Konsep yang Beberapa operasi untuk analitis • Tidak ada konsep urutan baris sulit dan untuk diungkapkan, seperti dimensi mengurutkan pada beberapa mungkin rumit kriteria dan mengekspresikan kueri sulit fase eksekusi, dll. sintaksis intuitif kompleks dipahami: konteks saat ini, • harus digabungkan dimensi • Tabel • hierarki: navigasi Tidak begitu baik untuk jenis kueri digunakan analisis data yang dalam KESIMPULAN 1. Tupel mengidentifikasi sel tunggal dalam kubus multidimensi. Sebuah tupel didefinisikan dengan menyatakan satu anggota dari satu atau beberapa dimensi kubus. 2. Himpunan/ set adalah kumpulan tupel yang didefinisikan menggunakan dimensi yang sama. 3. Pada operasi ukuran pada MDX sama seperti dimensi. 4. Operasi MDX adalah Basic Query, calculate member and name set, relative navigation, time series, filtering, sorting. DAFTAR PUSTAKA 1. Alejandro Vaisman, Esteban Zimanyi. (2014). Data Warehouse System Design and Implementation. Springer Verlag Berlin. ISBN 978-3-642-54655-6

Use Quizgecko on...
Browser
Browser