Saya memiliki masalah yang saya hadapi setiap kali saya memutuskan untuk membangun kubus, dan saya belum menemukan cara untuk mengatasinya.
Masalahnya adalah bagaimana memungkinkan pengguna untuk menentukan berbagai hal secara otomatis tanpa harus membuat kode dalam dimensi. Saya akan menjelaskan masalah saya dalam sebuah contoh.
Saya memiliki meja yang disebut Pelanggan :
ini adalah data dalam tabel:
Saya ingin menampilkan data dalam gaya pivot dan mengelompokkan Gaji dan Usia dalam rentang yang ditentukan seperti di bawah ini:
Saya menulis skrip ini dan menetapkan rentang:
SELECT [CustId]
,[CustName]
,[Age]
,[Salary]
,[SalaryRange] = case
when cast(salary as float) <= 500 then
'0 - 500'
when cast(salary as float) between 501 and 1000 then
'501 - 1000'
when cast(salary as float) between 1001 and 2000 then
'1001 - 2000'
when cast(salary as float) > 2000 then
'2001+'
end,
[AgeRange] = case
when cast(age as float) < 15 then
'below 15'
when cast(age as float) between 15 and 19 then
'15 - 19'
when cast(age as float) between 20 and 29 then
'20 - 29'
when cast(age as float) between 30 and 39 then
'30 - 39'
when cast(age as float) >= 40 then
'40+'
end
FROM [Customers]
GO
Rentang saya dikodekan dan ditentukan dengan keras. Ketika saya menyalin data ke Excel dan melihatnya dalam tabel pivot, itu muncul seperti di bawah ini:
Masalah saya adalah saya ingin membuat kubus dengan mengubah tabel Pelanggan menjadi tabel fakta dan membuat tabel 2 dimensi SalaryDim & AgeDim .
The SalaryDim tabel memiliki 2 kolom ( SalaryKey, SalaryRange ) dan AgeDim meja mirip ( ageKey, RentangUsia ). Tabel fakta Pelanggan saya memiliki:
Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim
Saya masih harus menentukan rentang saya di dalam dimensi ini. Setiap kali saya menghubungkan pivot Excel ke kubus saya, saya hanya bisa melihat rentang yang ditentukan dengan hardcode ini.
Pertanyaan saya adalah bagaimana menentukan rentang secara dinamis dari tabel pivot secara langsung, tanpa membuat dimensi rentang seperti AgeDim dan SalaryDim . Saya tidak ingin hanya terjebak pada rentang yang ditentukan dalam dimensi.
Kisaran yang ditentukan adalah '0-25', '26 -30 ', '31 - 50'. Saya mungkin ingin mengubahnya ke '0-20', '21 -31 ', '32 -42' dan seterusnya, dan pengguna meminta rentang yang berbeda setiap waktu.
Setiap kali saya mengubahnya, saya harus mengubah dimensi. Bagaimana saya bisa meningkatkan proses ini?
Akan lebih bagus untuk memiliki solusi yang diterapkan dalam kubus, sehingga alat klien BI apa pun yang tersambung ke kubus dapat menentukan rentang, tapi saya tidak keberatan jika ada cara yang baik menggunakan Excel saja.
sumber
Dengan bahasa MDX Anda dapat membuat anggota khusus yang akan menentukan rentang. Ungkapan berikut mendefinisikan anggota terhitung yang mewakili semua gaji antara 501 dan 1000:
Anda dapat melakukan hal yang sama dengan dimensi usia:
Artikel ini menjelaskan cara menambahkan tesis para anggota yang dikulturkan ini di Excel (lihat bagian ' Membuat anggota / tindakan yang dihitung dan set di bagian Excel 2007 OLAP PivotTables '). Sayangnya tidak ada UI di Excel untuk ini. Namun demikian, Anda dapat menemukan klien BI yang mendukung bahasa MDX , yang memungkinkan untuk menentukan Ranges Anda di kueri.
sumber
Salary
danAge
dimensi.