Download sample code
Sudah pernah membuat matrix seperti ini?

Di Reporting Services 2000 atau 2005 saya biasanya mengakalinya dengan cara seperti ini:

Membuat dua buah matrix lalu meletakkannya dalam posisi yang bersebelahan, lalu size kolom pertama dan kedua saya pada matrix yang kedua dikecilkan sampai nyaris tidak terlihat agar seolah-olah hanya terdapat satu matrix di report. Bos saya sering menyebut saya seorang penipu karena melakukan hal ini, habis mau bagaimana lagi apabila ini adalah requirement user? Kalo mengambil istilah dosen saya, bikin matrix seperti itu tuh bikin jabrik karena apabila ada penambahan atau pengurangan subgroup atau kolom pada matrix yang pertama, perubahan column width, saya harus menggeser-geser matrix yang kedua agar posisinya bersebelahan dan tidak terlihat menumpuk.
Tapi di Reporting Services 2008 hal ini tidak perlu saya lakukan lagi. SSRS 2008 memperkenalkan sebuah data region baru yang diberi nama Tablix, Table + Matrix. Kenapa disebut tablix adalah karena data region ini dapat memiliki fixed columns dan dynamic rows seperti table, dan juga dapat memiliki dynamic rows dan dynamic columns seperti matrix, dan kombinasi antara table dan matrix.
Yang harus dipelajari dan diperhatikan sebelum membuat tablix adalah konsep mengenai bagaimana mendefinisikan row dan column untuk detail data, group data, dan untuk label dan total. Untuk setiap row yang terdapat pada tablix, row terdapat didalam atau diluar sebuah row group. Apabila row terdapat didalam row group, maka row tersebut akan di-repeat satu kali untuk setiap unique value pada group, yang disebut group instance. Apabila row terdapat diluar row group, maka row tersebut hanya diulang sekali sesuai dengan relasi pada group tersebut. Row yang berada diluar semua row group akan bersifat statis dan hanya di-repeat satu kali, contohnya table header atau footer. Hal yang sama juga berlaku untuk column. Untuk penjelasan yang lebih detail mengenai tablix silakan buka Books Online.
Di SQL Server 2008, sample-nya tidak di-bundle dalam installer-nya akan tetapi ditaruh di codeplex. Karena saya tidak memiliki koneksi internet yang cepat, akhirnya saya putuskan untuk meng-copy database AdventureWorksDW yang terdapat di SQL Server 2005 ke instance SQL Server 2008, lalu mem-process cube AdventureWorks 2005 ke Analysis Services 2008. Untuk membuat tablix seperti pada gambar diatas saya menggunakan cube AdventureWorks, mengambil data category dan subcategory dari Dimension Product, Sales Teritory Group dari Dimension Sales Teritory, Calendar Year dari Dimension Date, dan Internet Sales Amount dari FactSales. Category diletakkan pada rows dan subcategory sebagai subgroup-nya. Column akan memiliki dua group yaitu Sales Teritory Group dan Calendar Year, sedangkan Internet Sales Amount akan menjadi detail data.
Buka SQL Server Business Intelligence Development Studios, klik menu File > New > Project…
Pilih Business Intelligence Project dari Project Types, pilih Report Server Projects dari Templates, beri nama TablixJabrix lalu klik OK

Tambahkan satu shared datasource ke SSAS AdventureWorksDW dan beri nama AdventureWorksDW

Tambahkan satu report dan beri nama InternetSalesAmount.rdl

Setelah report InternetSalesAmount terbuka, buka Report Data Pane dan tambahkan satu datasource ke shared datasource AdventureWorksDW lalu beri nama DatasourceAdventureWorksDW

Tambahkan satu dataset dari Report Data Pane dengan nama DatasetInternetSalesAmount, pilih DatasourceAdventureWorksDW sebagai Data Source. Klik Query Designer, lalu tambahkan Internet Sales Amount dari Measures, Calendar Year dari dimension Date, Category dan Subcategory dari dimension Product, dan Sales Teritory Group dari dimension Sales Teritory. Klik Ok untuk menutup Query Designer, lalu klik OK untuk menutup dataset

Pada Design Tab, klik kanan lalu pilih insert > Textbox dan beri value Internet Sales Report
Tambahkan satu buah matrix dengan cara klik kanan pada Design Tab, lalu pilih Insert > Matrix. Selain dengan matrix, kita juga bisa menggunakan table dan list.
Pada properties, pilih DatasetInternetSalesAmount sebagai DataSetName
Untuk menambah category pada row dengan me-roll over mouse ke bagian row dari matrix, pada saat muncul icon
, klik icon tersebut lalu pilih Category

Tambahkan subgroup subcategory pada row dengan klik kanan pada Row Groups Category, pilih Add Group > Child Group…
Pilih [SubCategory] pada group by, lalu klik OK

Tambahkan column group Sales Territory Group dengan me-roll over mouse ke bagian column dari matrix, pada saat muncul icon
, klik icon tersebut lalu pilih Sales_Territory_Group

Tambahkan Calendar Year pada column dengan klik kanan pada Column Groups Sales_Territory_Group, pilih Add Group > Adjacent After…
Pilih [Calendar_Year] pada group by, lalu klik OK

Roll over mouse pada bagian data yang terdapat di column [Sales_Territory_Group], pada saat muncul icon
, klik icon tersebut lalu pilih Internet_Sales_Amount

Roll over mouse pada bagian data yang terdapat di column [Calendar_Year], pada saat muncul icon
, klik icon tersebut lalu pilih Internet_Sales_Amount

Selesai! Dan berikut adalah hasilnya pada preview tab yang telah saya beri format number dan diberi sedikit warna
