मेरे पास एक मुद्दा है जो मुझे हर बार सामना करना पड़ता है जब मैं एक घन बनाने का फैसला करता हूं, और मुझे अभी तक इसे दूर करने का कोई रास्ता नहीं मिला है।
मुद्दा यह है कि उपयोगकर्ता को आयाम में हार्डकोड की आवश्यकता के बिना चीजों की एक श्रृंखला को स्वचालित रूप से परिभाषित करने की अनुमति कैसे दी जाती है। मैं अपनी समस्या एक उदाहरण में बताऊंगा।
मेरे पास ग्राहक नामक एक तालिका है :
यह तालिका में डेटा है:
मैं डेटा को धुरी शैली में प्रदर्शित करना चाहता हूं और नीचे की तरह परिभाषित सीमाओं में वेतन और आयु को समूहित करता हूं :
मैंने यह स्क्रिप्ट लिखी है और श्रेणियों को परिभाषित किया है:
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
मेरी सीमाएँ कठिन कूटबद्ध और परिभाषित हैं। जब मैं डेटा को एक्सेल में कॉपी करता हूं और इसे पिवट टेबल में देखता हूं, तो यह नीचे की तरह दिखाई देता है:
मेरी समस्या यह है कि मैं ग्राहकों की तालिका को एक तथ्य तालिका में परिवर्तित करके एक क्यूब बनाना चाहता हूं और 2 आयाम तालिकाएं SalaryDim और Ageimim बना सकता हूं ।
SalaryDim तालिका 2 कॉलम (है SalaryKey, SalaryRange ) और AgeDim तालिका समान है ( ageKey, AgeRange )। मेरे ग्राहक तथ्य तालिका में है:
Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim
मुझे अभी भी इन आयामों के अंदर अपनी सीमाओं को परिभाषित करना है। हर बार जब मैं एक्सेल पिवेट को अपने क्यूब से जोड़ता हूं, तो मैं केवल इन हार्डकोड को परिभाषित सीमाओं को देख सकता हूं।
मेरा सवाल यह है कि आयु सीमा और वेतनरी जैसे सीमा आयामों को बनाए बिना, सीधे धुरी तालिका से श्रेणियों को कैसे परिभाषित किया जाए । मैं केवल आयाम में परिभाषित सीमाओं के लिए फंस नहीं करना चाहता।
परिभाषित की गई सीमा '0-25', '26 -30 ', '31 - 50' है। मैं इसे '0-20', '21 -31 ', '32 -42' वगैरह में बदलना चाह सकता हूं और हर बार अलग-अलग रेंज के लिए उपयोगकर्ता अनुरोध करते हैं।
जब भी मैं इसे बदलूंगा, मुझे आयाम बदलना होगा। मैं इस प्रक्रिया को कैसे सुधार सकता हूं?
क्यूब में कार्यान्वित समाधान का होना बहुत अच्छा होगा, ताकि जो भी बीआई क्लाइंट टूल क्यूब से जुड़ता है वह पर्वतमाला को परिभाषित कर सके, लेकिन मुझे कोई आपत्ति नहीं है यदि केवल एक्सेल का उपयोग करने का एक अच्छा तरीका है।