Tuesday, 21 April 2009

Decision Cube

Komponen decision cube (TDecisionCube) merupakan multidimensional data store yang mengambil datanya dari dataset (khususnya pernyataan SQL terstruktur yang dimasukkan melalui TDecisionQuery atau TQuery). Data yang disimpan dalam form akan membuat lebih mudah untuk di-pivot (mengubah cara dimana data diorganisir dan diringkas) tanpa perlu menjalankan query.


Properti Dan Event Decision Cube


Properti DimensionMap komponen TDecisionCube tidak hanya mengendalikan dimensi dan summary mana yang akan ditampilkan tetapi juga membolehkan Anda menetapkan date-ranges dan menentukan jumlah maksimum dimensi-dimensi decision cube. Anda dapat menampilkan nama, nilai (kategori), subtotal, atau data. Tampilan data pada waktu desain dapat mengkonsumsi waktu (tergantung pada data source).


Ketika Anda mengklik tombol ellipsis disebelah DimensionMap dalam Object Inspector, maka kotak dialog Decision Cube Editor akan ditampilkan. Anda dapat menggunakan Decision Cube Editor untuk men-set properti DimensionMap.


Event OnRefresh diaktifkan kapan saja decision cube cache dibangun kembali. Para developer dapat mengakses peta dimensi baru dan mengubahnya untuk membebaskan memory, mengubah dimensi dan summary maksimum, dan lain-lain. OnRefresh juga berguna jika user mengakses Decision Cube Editor. Kode aplikasi dapat merespon terhadap perubahan yang dibuat user.



Menggunakan Decision Cube Editor


Anda dapat menggunakan Decision Cube Editor untuk men-set properti DimensionMap decision cube. Anda dapat menampilkan Decision Cube Editor menggunakan Object Inspector, atau dengan cara klik kanan pada komponen decision cube (TDecisionCube) pada waktu desain dan pilih Decision Cube Editor.


Kotak dialog Decision Cube Editor mempunyai dua tab :


§ Tab Dimension Settings

Digunakan untuk mengaktifkan atau menonaktifkan dimensi, mengganti nama (rename) dan memformat kembali dimensi, meletakkan dimensi dalam status permanen, dan men-set date-ranges yang akan ditampilkan.


§ Tab Memory Control

Digunakan untuk men-set jumlah dimensi dan summary maksimum yang dapat diaktifkan kapan saja, menampilkan informasi tentang pemakaian memory, dan menentukan nama dan data yang ditampilkan pada waktu desain.


decision dataset menggunakan Decision Query editor

Semua data yang digunakan oleh decision support components akan dilewatkan atau dikirim melalui decision cube, yang menerima formatted-dataset khusus yang dihasilkan oleh query SQL.


TTable dan TQuery dapat digunakan sebagai decision dataset, dan hal ini akan menjadi lebih mudah menggunakan TDecisionQuery. Decision Query editor yang disediakan dapat digunakan untuk menentukan tabel, field, dan summary yang akan ditampilkan dalam decision cube dan akan membantu Anda untuk men-setup pernyataan SELECT dan GROUP BY secara benar. Untuk menggunakan Decision Query editor, Anda dapat gunakan langkah-langkah berikut ini :


1. Pilih komponen decision query (TDecisionQuery) pada form, kemudian klik kanan pada komponen decision query, dan pilih Decision Query editor. Kotak dialog Decision Query Editor akan ditampilkan.


2. Pilih database yang akan digunakan pada drop-down list Database.


3. Untuk queri tabel tunggal, klik tombol Select Table.


Untuk query yang lebih kompleks yang melibatkan multi-table joins, klik tombol Query Builder untuk menampilkan kotak dialog SQL Builder atau masukkan pernyataan SQL ke dalam edit box pada tab SQL Query.


4. Kembali ke kotak dialog Decision Query Editor.


5. Di dalam kotak dialog Decision Query Editor, pilih field di dalam List of Available Fields dan pindahkan field ke daftar Dimensions atau Summaries dengan cara mengklik tombol panah kanan yang sesuai. Begitu Anda menambahkan field ke dalam daftar Summaries, Anda dapat memilih tipe summary yang dapat digunakan yaitu sum, count, atau average.


6. Secara default, semua field dan summary yang didefinisikan dalam properti SQL decision query akan ditampilkan dalam list box Dimensions dan Summaries. Untuk menghilangkan (remove) dimensi atau summary, Anda dapat memilih field dalam list box Dimensions dan Summaries, kemudian klik tombol panah kiri disamping list box, atau dengan cara klik ganda pada field yang akan dihilangkan. Untuk menambahkannya kembali, Anda dapat memilih field dalam list box List of Available Fields, kemudian klik tombol panah kanan.


Setelah Anda mendefinisikan isi decision cube, Anda dapat lebih jauh memanipulasi tampilan dimensi (dimension-display), properti DimensionMap dan tombol TDecisionPivot.


Catatan: Ketika Anda menggunakan Decision Query Editor, maka query pada awalnya ditangani dengan sintaks ANSI-92 SQL, kemudian diterjemahkan (jika diperlukan) ke dalam dialect yang digunakan oleh server. Decision Query Editor hanya membaca dan menampilkan SQL standar ANSI. Dialect-translation secara otomatis ditugaskan ke properti SQL TDecisionQuery. Untuk memodifikasi query, yaitu dengan cara mengedit versi ANSI-92 dalam Decision Query daripada mengedit properti SQL.

membuat decision dataset menggunakan TQuery atau TTable

Jika Anda menggunakan komponen TQuery sebagai decision dataset, Anda harus secara manual men-setup pernyataan SQL, dan menyediakan GROUP BY yang berisi field-field yang sama (dan dalam urutan yang sama) seperti SELECT.


Pernyataan SQL akan terlihat seperti berikut ini :


SELECT ORDERS."Terms", ORDERS."ShipVIA",

ORDERS."PaymentMethod", SUM( ORDERS."AmountPaid" )

FROM "ORDERS.DB" ORDERS

GROUP BY ORDERS."Terms", ORDERS."ShipVIA", ORDERS."PaymentMethod"


Urutan field-field SELECT harus sesuai dengan urutan field-field GROUP BY.


Dengan TTable, Anda harus menyediakan informasi untuk decision cube tentang field-field mana dalam query yang merupakan grouping-field dan yang merupakan field summary. Untuk melakukan hal ini, masukkan Dimension Type untuk masing-masing field dalam DimensionMap Decision Cube. Anda harus mengindikasikan apakah masing-masing field merupakan dimensi atau summary. Jika merupakan summary, Anda harus menyediakan summary type. Karena pivoting-average tergantung pada kalkulasi-kalkulasi SUM/COUNT, Anda juga harus menyediakan nama field dasar untuk mengizinkan decision cube menyesuaikan pasangan aggregator SUM dan COUNT.

menggunakan dataset dengan decision support components

Satu-satunya decision support components yang membatasi atau mengikat (bind) secara langsung ke dataset adalah decision cube (TDecisionCube). TDecisionCube berharap menerima data dengan group dan summary yang didefinisikan oleh pernyataan SQL. Pernyataan GROUP BY harus berisi non-summarized field yang sama (dan dalam urutan yang sama) seperti peryataan SELECT, dan field summary harus diidentifikasi.


Komponen decision query (TDecisionQuery) merupakan format khusus TQuery. Anda dapat menggunakan TDecisionQuery untuk lebih menyerderhanakan definisi setup dimensi (baris dan kolom) dan nilai-nilai summary yang digunakan untuk menyediakan data ke decision cube (TDecisionCube). Anda juga dapat menggunakan TQuery atau BDE-enabled dataset lain sebagai dataset untuk TDecisionCube (tetapi setup dataset dan TDecisionCube adalah tanggungjawab para designer).

Menggunakan Decision Support Components

Decision support components dapat digunakan bersama-sama untuk menampilkan data multi-dimesi sebagai tabel dan graphic. Lebih dari satu grid atau graphic dapat disertakan untuk masing-masing dataset. Lebih dari satu instance TDecisionPivot dapat digunakan untuk menampilkan data dari perspektif yang berbeda pada waktu runtime.


Untuk membuat form dengan tabel dan graphic data multi-dimesi, Anda dapat menggunakan langkah-langkah berikut ini :


1. Buatlah sebuah form.


2. Tambahkan komponen-komponen berikut ini pada form dan gunakan Object Inspector untuk membatasinya ketika mengindikasikan :


§ Dataset (pada umumnya TDecisionQuery atau TQuery).


§ Decision cube (TDecisionCube) diikat ke dalam dataset dengan cara menetapkan properti DataSet-nya ke nama dataset.


§ Decision source (TDecisionSource) diikat ke dalam decision cube dengan cara menetapkan properti DecisionCube-nya ke nama decision cube.


3. Tambahkan decision pivot (TDecisionPivot), kemudian mengikatnya ke dalam decision source dalam Object Inspector dengan cara menetapkan properti DecisionSource-nya ke nama decision source yang sesuai. Decision pivot bersifat optional. Decision pivot membolehkan developer form dan end user mengubah dimensi-dimensi yang ditampilkan dalam decision grid atau decision graph.


Dalam orientasi default-nya (horisontal), tombol-tombol di bagian kiri decision pivot berlaku untuk field-field di bagian kiri decision grid (baris). Tombol-tombol di bagian kanan berlaku untuk field-field di bagian atas decision grid (kolom).


Anda dapat menetapkan dimana tombol-tombol decision pivot yang akan ditampilkan dengan cara men-set properti GroupLayout-nya ke xtVertical, xtLeftTop, atau xtHorizontal (nilai default).


4. Tambahkan satu atau lebih decision grid dan decision graph yang diikat ke dalam decision source.


5. Gunakan Decision Query Editor atau properti SQL TDecisionQuery (atau TQuery) untuk menentukan tabel, field dan summary yang akan ditampilkan dalam grid atau graphic. Field terakhir SQL SELECT harus menjadi field summary. Field lainnya dalam SELECT haruslah field GROUP BY.


6. Tetapkan properti Active decision query ke nilai True.


7. Gunakan decision grid dan decision graph untuk menampilkan dan memetakan dimensi-dimensi data yang berbeda.

Crosstab

Cross-tabulation atau crosstab merupakan cara untuk menampilkan subset data sehingga relationship dan trend menjadi lebih visible. Field-field tabel menjadi dimensi-dimensi crosstab ketika nilai-nilai field mendefinisikan kategori dan summary di dalam sebuah dimensi. Anda dapat menggunakan decision support components untuk men-setup crosstab di dalam form. TDecisionGrid menampilkan data dalam tabel, sementara TDecisionGraph menampilkan data dalam bentuk graphic. TDecisionPivot mempunyai tombol-tombol yang membuatnya lebih mudah untuk menampilkan dan menyembunyikan dimensi dan memindahkannya di antara kolom dan baris. Crosstab dapat berupa satu dimensi atau multi-dimensi.


Crosstab Satu Dimensi


Crosstab satu dimensi (One-dimensional crosstabs) akan menampilkan summary-row atau summary-column untuk kategori dimensi tunggal. Contoh, jika Payment adalah dimensi kolom yang dipilih dan Amount Paid adalah summary-category, maka crosstab akan memperlihatkan Amount Paid yang menggunakan masing-masing metode.


Crosstab Multi-dimensi


Crosstab multi-dimensi (multidimensional-crosstabs) menggunakan dimensi tambahan untuk baris dan kolom. Contoh, crosstab dua dimensi dapat menampilkan amounts-paid (by payment method) untuk masing-masing country. Crosstab tiga dimensi dapat menampilkan amounts-paid (by payment method), dan term (by country).

Tentang Decision Support Components

Decision-support-components membantu Anda membuat cross-tabulated atau crosstab-tables, dan graphic. Anda kemudian dapat menggunakan tabel dan graphic ini untuk melihat dan merangkum data dari perspektif yang berbeda.


Decision support components yang ditampilkan pada tab atau page Decision Cube Component palette diantaranya :


§ Decision cube (TDecisionCube), merupakan multidimensional data store.


§ Decision source (TDecisionSource), mendefinisikan status pivot decision grid atau decision graph yang aktif.


§ Decision query (TDecisionQuery), merupakan format khusus TQuery yang digunakan untuk mendefinsikan data dalam decision cube.


§ Decision pivot (TDecisionPivot), membolehkan Anda membuka atau menutup dimensi atau field decision cube dengan cara menekan tombol.


§ Decision grid (TDecisionGrid), menampilkan single-data dan multidimensional-data dalam format tabel.


§ Decision graph (TDecisionGraph), menampilkan field-field decision grid sebagai graphic dinamis yang berubah ketika dimensi-dimensi data dimodifikasi.

Menyusun Urutan Persistent Columns

Urutan kolom yang ditampilkan dalam Columns editor adalah sama seperti urutan kolom yang ditampilkan dalam grid. Anda dapat mengubah urutan kolom dengan cara melakukan drag-and-drop pada kolom dalam Columns editor.


Untuk mengubah urutan kolom :


1. Pilih kolom yang akan diubah urutannya dalam Columns editor.


2. Kemudian men-drag kolom tersebut ke lokasi baru atau lokasi yang Anda inginkan..


Pada waktu runtime, user dapat menggunakan mouse untuk men-drag sebuah kolom ke lokasi baru dalam grid jika properti DragMode di-set ke dmManual. Mengurutkan kembali kolom grid dengan properti State pada status csDefault, juga akan mengurutkan kembali komponen-komponen field dalam dataset grid. Urutan field dalam tabel fisik tidak akan terpengaruh. Untuk mencegah user menyusun kembali kolom pada waktu runtime, Anda dapat menetapkan properti DragMode ke dmAutomatic.


Pada waktu runtime, event OnColumnMoved grid akan diaktifkan setelah kolom dipindahkan.

Menghapus Persistent Columns

Menghapus persistent columns grid adalah bermanfaat untuk menghilangkan field-field yang Anda tidak ingin tampilkan. Untuk menghapus persistent columns dari grid :


1. Klik ganda grid (TDBGrid) untuk menampilkan Columns editor.


2. Pilih field yang Anda ingin dihapus (di dalam Columns list box).


3. Klik tombol Delete Selected (Anda juga dapat menggunakan menu konteks atau tombol Del pada keyboard untuk menghapus kolom).


Jika Anda ingin menghapus semua kolom dari grid, maka properti Columns.State kembali ke status csDefault dan secara otomatis membangun kolom-kolom dinamis untuk masing-masing field dalam dataset.


Anda dapat menghapus persistent columns pada waktu runtime dengan cara membebaskan objek kolom :


DBGrid1.Columns[5].Free;

Membuat Persistent Columns

Untuk meng-customize tampilan grid pada waktu desain, Anda dapat menggunakan Columns editor untuk membuat sekumpulan objek persistent columns pada grid. Pada waktu runtime, properti State grid dengan persistent column objects secara otomatis di-set ke csCustomized.


Untuk membuat persistent columns pada kontrol grid :


1. Pilih komponen grid (TDBGrid) dalam form.


2. Memanggil Columns editor dengan cara meng-klik ganda properti Columns grid dalam Object Inspector.


Kolom list box akan menampilkan persistent columns yang telah didefinisikan. Ketika pertama kali Anda menggunakan Columns editor, maka daftar ini masih kosong karena grid masih dalam status default (hanya berisi kolom-kolom dinamis).


Anda dapat membuat persistent columns untuk semua field dalam dataset, atau Anda dapat membuat persistent columns pada basis individual. Untuk membuat persistent columns untuk semua field :


1. Klik kanan grid (TDBGrid) untuk memanggil menu konteks dan pilih Add All Fields. Jika grid belum dihubungkan dengan data source, maka Add All Fields masih dalam status disable. Hubungkan grid dengan data source yang mempunyai dataset aktif sebelum memilih Add All Fields.


2. Jika grid telah berisi persistent columns, maka kotak dialog akan bertanya jika Anda ingin menghapus kolom yang telah ada, atau menambahkan kolom yang akan di-set. Jika Anda memilih Yes, maka informasi persistent columns yang telah ada akan dihapus, dan semua field dalam dataset yang aktif akan disisipkan dengan nama field menurut urutannya dalam dataset. Jika Anda memilih No, maka informasi persistent columns yang telah ada akan tetap dipertahankan, dan informasi kolom baru akan ditambahkan ke dalam dataset.


3. Klik tombol Close untuk mengaplikasikan persistent columns pada grid.


Untuk membuat persistent columns secara individual :


1. Klik tombol Add New dalam Columns editor. Kolom baru akan dipilih dalam list box. Kolom-kolom baru diberi nomor urut dan nama default (contoh, 0 - TColumn).


2. Untuk menghubungkan field dengan kolom baru ini, maka tetapkan properti FieldName dalam Object Inspector.


3. Untuk menetapkan judul kolom baru, perluas properti Title atau klik tanda plus (+) disebelah kiri properti Title dalam Object Inspector. Kemudian masukkan nama judul kolom baru pada properti Caption.


4. Tutup Columns editor untuk mengaplikasikan persistent columns pada grid.


Pada waktu runtime, Anda dapat men-switch persistent columns dengan cara menugaskan csCustomized ke properti Columns.State. Kolom yang ada dalam grid akan dihapus dan persistent columns baru akan dibangun untuk masing-masing field dalam dataset grid. Anda kemudian dapat menambahkan persistent columns pada waktu runtime dengan memanggil metode Add pada daftar kolom seperti berikut ini :


DBGrid1.Columns.Add;