Bagikan melalui


Memecahkan masalah kubus OLAP di Service Manager

Bagian berikut menjelaskan masalah umum yang mungkin perlu Anda hadapi saat memecahkan masalah kubus data OLAP (pemrosesan analitik online) dalam gudang data Service Manager.

Kegagalan pemrosesan

Meskipun perlindungan ada di database DWRepository untuk memastikan integritas data, mereka tidak dapat sepenuhnya mencegah kemungkinan kesalahan pemrosesan. Kesalahan pemrosesan yang paling umum adalah pengecualian DimensionKeyNotFound. Karena dimensi SQL Server Analysis Server (SSAS) diproses setiap 60 menit secara default, ada kemungkinan bahwa saat memproses grup ukuran fakta, kunci dimensi belum ada. Dalam hal ini, secara default logika pemrosesan memproses ulang dimensi SSAS menggunakan tugas ProcessUpdate dan kemudian memproses ulang fakta hingga dua kali untuk mengatasi kesalahan utama.

Ada beberapa situasi yang jarang terjadi di mana pemrosesan ulang mungkin gagal. Berikut ini adalah kemungkinan penyebab kegagalan ini:

  • Hanya Repositori gudang data yang memberlakukan kunci asing untuk memastikan integritas data. Data mart tidak memiliki kunci asing demi pertimbangan kinerja. Karena proses pemuatan memindahkan data secara massal dari repositori ke data mart menggunakan metode Objek Data ActiveX, ada kemungkinan bahwa data fakta telah dimuat sebelum kunci dimensi akibat dari masalah waktu. Untuk mengatasi masalah ini, proses beban harus dijalankan lagi untuk memindahkan kunci dimensi yang ada.

  • Dalam beberapa situasi data mart, semua dimensi setiap data mart mengarah pada data mart utama dari gudang data. Ini untuk mengurangi ukuran dan waktu pemrosesan kubus OLAP. Namun, dimungkinkan bagi fakta di dalam data mart Operations Manager atau Configuration Manager untuk menargetkan kunci dimensi yang belum ada di data mart gudang data utama. Dalam hal ini, Anda harus menjalankan tugas pemuatan pada mart data utama untuk memecahkan kegagalan pemrosesan pada kubus yang mengarahkan ke mart data Operations Manager atau Configuration Manager.

Memecahkan masalah kustomisasi MDX

Karena banyak kustomisasi kubus memerlukan pengetahuan kerja tentang Ekspresi Multidmensional (MDX), biasanya terjadi kesalahan sintaks dalam ekspresi MDX awal yang digunakan untuk kustomisasi kubus OLAP. Beberapa upaya mungkin diperlukan sebelum ekspresi cocok untuk kebutuhan Anda. Anda harus menguji ekspresi MDX pada kubus OLAP menggunakan Business Intelligence Development Studio (BIDS) atau SSAS, tanpa menyimpan perubahan, sebelum Anda menambahkan ekspresi MDX ke kubus OLAP menggunakan CubeExtension atau menentukannya dalam elemen SystemCenterCube.

Namun, jika Anda memiliki kesalahan dalam ekspresi MDX saat menambahkannya dalam paket manajemen dengan menggunakan CubeExtension, Anda dapat menghapus instalan ekstensi kubus untuk mengembalikan perubahan apa pun yang dibuat pada kubus OLAP. Jika ekspresi didefinisikan menggunakan elemen SystemCenterCube, Anda harus menghapus instalan paket manajemen, lalu menghapus kubus OLAP secara manual dari SSAS sebelum Anda melakukan koreksi dan menyebarkan ulang paket manajemen kubus OLAP. Karena itu, Anda harus menentukan kustomisasi kubus dengan menggunakan elemen CubeExtension.

Kegagalan penyebaran paket manajemen Kubus OLAP

Anda mungkin memiliki situasi di mana Anda ingin menelusuri kelompok ukuran WorkItems Ditetapkan Untuk Pengguna dan kemudian Anda ingin menyaring semua pengguna di departemen tertentu. Ketika Anda mencoba melakukan filter pada UserDim, tidak ada yang terjadi atau tidak ada data yang dikembalikan. Ini mungkin membingungkan karena UserDim memiliki hubungan dengan grup pengukuran.

Dalam situasi ini, ingatlah bahwa dimensi database yang sama dapat memiliki beberapa peran dalam model multidmensional. Kami menyebut dimensi ini dimensi bermain peran. Misalnya, dimensi waktu dapat digunakan beberapa kali dalam kubus OLAP yang menjelaskan informasi penerbangan. Dimensi bermain peran yang berbeda dalam kasus ini bisa berupa Waktu Keberangkatan dan Waktu Kedatangan , di mana keduanya menargetkan dimensi Waktu .

Dalam contoh WorkItems Assigned To User, sebenarnya nama peran yang diberikan dari dimensi pengguna adalah AssignedToUser. Jika pengguna memfilter menggunakan dimensi ini daripada "UserDim", pengguna akan mendapatkan informasi yang benar.

BIDS memiliki fitur berguna yang disebut tab Pemakaian Dimensi yang menunjukkan hubungan antara dimensi dan kubus OLAP sehingga Anda dapat menentukan dimensi mana yang dapat Anda gunakan untuk memotong dan menganalisis kubus OLAP. Selain itu, dalam contoh WorkItems Assigned To User, UserDim tidak memiliki hubungan dengan grup pengukuran WorkItemAssignedToUser, sementara UserDim(AssignedToUser) memang memiliki hubungan dengan grup pengukuran tempat atribut gabungan adalah UserDimKey. Dalam hal ini, Anda dapat melihat nama peran yang disorot dalam tanda kurung pada tab Penggunaan Dimensi.

Manajer Layanan tidak memiliki kemampuan tab Penggunaan Dimensi. Oleh karena itu, Anda harus melihat BIDS untuk menentukan dengan tepat dimensi mana yang dapat difilter pada kubus tertentu.

Kegagalan memproses kubus OLAP di server SSAS jarak jauh

Dalam situasi tertentu, memproses kubus OLAP pada server SSAS jarak jauh mungkin gagal karena firewall belum dikonfigurasi dengan benar. Instans default SSAS menggunakan port TCP/IP 2383, dan port ini harus dibuka blokirnya di firewall untuk mengizinkan akses. Untuk membuka blokir port, jalankan instruksi baris perintah berikut:

C:\Windows\system32>set port=2383   
C:\Windows\system32>netsh advfirewall firewall add rule name="Analysis Services" protocol=TCP dir=in localport=2383 action=allow  

Pemrosesan kubus OLAP berhenti

Mungkin ada banyak penyebab pemrosesan kubus OLAP berhenti. Anda harus terlebih dahulu memastikan bahwa server memiliki RAM yang cukup, terutama dalam situasi di mana gudang data dan server SSAS dihosting di server yang sama, sehingga ada cukup memori untuk menjalankan ekstraksi gudang data, transformasi, dan pemuatan (ETL) dan pekerjaan pemrosesan kubus secara bersamaan. Beberapa solusi potensial tercantum di sini:

  1. Ada masalah kebuntuan yang diketahui di Microsoft SQL Server 2008 Analysis Services. Solusinya adalah meningkatkan jumlah utas dalam kumpulan utas pemrosesan sebelum pemrosesan berhenti. Jika sistem sudah dihentikan, solusinya adalah memulai ulang layanan Manajemen Pusat Sistem dan layanan Analysis Services lalu mengatur ulang item kerja pemrosesan kubus ke status 3, yang berarti tidak dimulai, sehingga mesin alur kerja Manajer Layanan dapat memulai ulang.

    Nota

    Untuk menentukan item kerja pemrosesan kubus yang relevan, Anda dapat menjalankan kueri berikut pada database DWStagingAndConfig. Kueri ini ditampilkan secara individual; namun, Anda dapat dengan mudah menggabungkannya dalam satu kueri:

    select processId from infra.process where processname like 'Process.{CubeName}'  
    select batchid from infra.batch where processId = {ProcessId from previous query}  
    select * from infra.workitem(nolock) where BatchId = {BatchId from previous query}  
    update infra.workitem set statusid = 3 where workitemId = {workitemId from previous query)  
    
    
  2. Periksa properti CoordinatorExecutionMode pada layanan SSAS, dan pastikan bahwa properti tersebut diatur dengan benar. Anda dapat membaca lebih lanjut tentang masalah ini di forum SQL Server .

Tugas DWMaintenance berhenti pada langkah ManageCubePartitions atau ManageCubeTranslations

Dalam situasi ini, penyebab paling umum adalah server SSAS nonresponsif. Solusinya sama untuk langkah pertama di bagian sebelumnya, "Pemrosesan Kubus OLAP Berhenti." Untuk menentukan item kerja pemrosesan kubus yang relevan, Anda dapat menjalankan kueri berikut pada database DWStagingAndConfig. Perhatikan bahwa kueri ini ditampilkan secara individual; namun, Anda dapat dengan mudah menggabungkannya dalam satu kueri:

select processid from infra.process where processname = 'DWMaintenance'  
select * from infra.ProcessModule where ProcessId = {ProcessId from previous query} (Note the ProcessModuleId where the VertexName is ManageCubePartitions/ManageCubeTranslaions)  
Select * from infra.batch where ProcessId = {ProcessId from previous query} (Note the BatchId from the largest batch)  
select * from infra.WorkItem where BatchId = {BatchId from previous query}  
update infra.workitem set statusid = 3 where workitemId = {workitemId for the step that is not responding with the corresponding processmoduleid for ManageCubePartitions/ManageCubeTranslations)  

Langkah berikutnya