ฉันมีปัญหาที่ฉันเผชิญทุกครั้งที่ฉันตัดสินใจที่จะสร้างคิวบ์และฉันยังไม่พบวิธีที่จะเอาชนะมันได้
ปัญหาคือวิธีการอนุญาตให้ผู้ใช้กำหนดช่วงของสิ่งต่าง ๆ โดยอัตโนมัติโดยไม่จำเป็นต้อง hardcode พวกเขาในมิติ ฉันจะอธิบายปัญหาของฉันในตัวอย่าง
ฉันมีตารางชื่อลูกค้า :
นี่คือข้อมูลในตาราง:
ฉันต้องการแสดงข้อมูลในรูปแบบ pivot และจัดกลุ่มเงินเดือนและอายุในช่วงที่กำหนดดังนี้:
ฉันเขียนสคริปต์นี้และกำหนดช่วง:
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
ช่วงของฉันเขียนได้ยากและถูกกำหนดไว้ เมื่อฉันคัดลอกข้อมูลไปยัง Excel และดูในตารางเดือยมันจะปรากฏขึ้นด้านล่าง:
ปัญหาของฉันคือผมต้องการสร้างก้อนโดยการแปลงลูกค้าตารางลงในตารางความจริงและสร้างตาราง 2 มิติSalaryDim & AgeDim
SalaryDimตารางมี 2 คอลัมน์ ( SalaryKey, SalaryRange ) และAgeDimตารางคล้ายกัน ( ageKey, ช่วงอายุ ) ตารางข้อเท็จจริงลูกค้าของฉันมี:
Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim
ฉันยังต้องกำหนดช่วงของฉันภายในส่วนข้อมูลเหล่านี้ ทุกครั้งที่ฉันเชื่อมต่อเดือย Excel กับคิวบ์ของฉันฉันจะเห็นเฉพาะช่วงที่กำหนดฮาร์ดโค้ด
คำถามของฉันคือวิธีการกำหนดช่วงแบบไดนามิกจากตารางเดือยโดยตรงโดยไม่ต้องสร้างมิติที่หลากหลายเช่นAgeDimและSalaryDim ฉันไม่ต้องการติดกับช่วงที่กำหนดไว้ในมิติข้อมูลเท่านั้น
ช่วงที่กำหนดคือ '0-25', '26 -30 ', '31 - 50' ฉันอาจต้องการเปลี่ยนเป็น '0-20', '21 -31 ', '32 -42' และอื่น ๆ และผู้ใช้ร้องขอช่วงที่แตกต่างกันทุกครั้ง
ทุกครั้งที่ฉันเปลี่ยนฉันต้องเปลี่ยนมิติ ฉันจะปรับปรุงกระบวนการนี้ได้อย่างไร
มันจะเป็นการดีถ้ามีโซลูชันที่นำมาใช้ในคิวบ์เพื่อให้เครื่องมือไคลเอนต์ BI ใด ๆ ที่เชื่อมต่อกับคิวบ์สามารถกำหนดช่วง แต่ฉันก็ไม่รังเกียจหากมีวิธีที่ดีในการใช้ Excel เท่านั้น