Manipulasi Data MDX - KUBUS PEMBARUAN
Pernyataan UPDATE CUBE digunakan untuk menulis kembali data ke sel mana pun dalam kubus yang dikumpulkan ke induknya menggunakan agregasi SUM. Untuk penjelasan selengkapnya dan contohnya, lihat "Memahami Alokasi" dalam posting blog ini: Membangun Aplikasi Tulis Balik dengan Analysis Services (blog).
Sintaks
UPDATE [ CUBE ] Cube_Name
SET
<update clause>
[, <update clause> ...n ]
<update clause> ::=
Tuple_Expression[.VALUE]= New_Value
[
USE_EQUAL_ALLOCATION
| USE_EQUAL_INCREMENT
| USE_WEIGHTED_ALLOCATION [ BY Weight_Expression]
| USE_WEIGHTED_INCREMENT [ BY Weight_Expression]
]
Argumen
Cube_Name
String valid yang menyediakan nama kubus.
Tuple_Expression
Ekspresi Ekspresi Multidmensional (MDX) yang valid yang mengembalikan tuple.
New_Value
Ekspresi numerik yang valid.
Weight_Expression
Ekspresi numerik Ekspresi Multidimensi (MDX) yang valid yang mengembalikan nilai desimal antara 0 dan 1.
Keterangan
Anda dapat memperbarui nilai sel daun atau nonleaf tertentu dalam kubus, secara opsional mengalokasikan nilai untuk sel non-daun tertentu di seluruh sel daun dependen. Sel yang ditentukan oleh ekspresi tuple dapat berupa sel yang valid di ruang multidmensional (artinya, sel tidak harus sel daun). Namun, sel harus diagregasi dengan fungsi Agregat Jumlah dan tidak boleh menyertakan anggota terhitung dalam tuple yang digunakan untuk mengidentifikasi sel.
Mungkin berguna untuk menganggap pernyataan UPDATE CUBE sebagai subroutine yang akan secara otomatis menghasilkan serangkaian operasi tulis balik sel individual ke sel daun dan non-daun yang akan digulung menjadi jumlah tertentu.
Berikut ini adalah deskripsi metode alokasi.
USE_EQUAL_ALLOCATION: Setiap sel daun yang berkontribusi pada sel yang diperbarui akan diberi nilai yang sama berdasarkan ekspresi berikut.
<leaf cell value> =
<New Value> / Count(leaf cells that are contained in <tuple>)
USE_EQUAL_INCREMENT: Setiap sel daun yang berkontribusi pada sel yang diperbarui akan diubah sesuai dengan ekspresi berikut.
<leaf cell value> = <leaf cell value> +
(<New Value > - <existing value>) /
Count(leaf cells contained in <tuple>)
USE_WEIGHTED_ALLOCATION: Setiap sel daun yang berkontribusi pada sel yang diperbarui akan diberi nilai yang sama yang didasarkan pada ekspresi berikut.
<leaf cell value> = < New Value> * Weight_Expression
USE_WEIGHTED_INCREMENT: Setiap sel daun yang berkontribusi pada sel yang diperbarui akan diubah sesuai dengan ekspresi berikut.
<leaf cell value> = <leaf cell value> +
(<New Value> - <existing value>) * Weight_Expression
Jika ekspresi berat tidak ditentukan, pernyataan UPDATE CUBE secara implisit menggunakan ekspresi berikut.
Weight_Expression = <leaf cell value> / <existing value>
Ekspresi berat harus dinyatakan sebagai nilai desimal antara nol (0) dan 1. Nilai ini menentukan rasio nilai yang dialokasikan yang ingin Anda tetapkan ke sel daun yang dipengaruhi oleh alokasi. Programmer aplikasi klien memiliki tanggung jawab untuk membuat ekspresi yang nilai agregat rollup-nya akan sama dengan nilai ekspresi yang dialokasikan.
Perhatian
Aplikasi klien harus mempertimbangkan alokasi semua dimensi secara bersamaan untuk menghindari kemungkinan hasil yang tidak terduga, termasuk nilai rollup yang salah atau data yang tidak konsisten.
Setiap alokasi KUBUS PEMBARUAN harus dianggap atom untuk tujuan transaksional. Ini berarti, bahwa jika salah satu operasi alokasi gagal karena alasan apa pun, seperti kesalahan dalam rumus atau pelanggaran keamanan, seluruh operasi KUBUS PEMBARUAN akan gagal. Sebelum perhitungan operasi alokasi individu diproses, rekam jepret data diambil untuk memastikan bahwa perhitungan yang dihasilkan sudah benar.
Perhatian
Ketika digunakan pada ukuran yang berisi bilangan bulat, metode USE_WEIGHTED_ALLOCATION dapat mengembalikan hasil yang tidak tepat yang disebabkan oleh perubahan pembulatan bertambah bertahas.
Penting
Ketika sel yang diperbarui tidak tumpang tindih, properti string koneksi Tingkat Isolasi Pembaruan dapat digunakan untuk meningkatkan performa UNTUK KUBUS PEMBARUAN.