Mam problem, z którym spotykam się za każdym razem, gdy decyduję się na zbudowanie sześcianu, i jeszcze nie znalazłem sposobu na jego rozwiązanie.
Problem polega na tym, jak zezwolić użytkownikowi na automatyczne definiowanie zakresu rzeczy bez konieczności kodowania ich na stałe w wymiarze. Wyjaśnię mój problem na przykładzie.
Mam tabelę o nazwie Klienci :
to są dane w tabeli:
Chcę wyświetlać dane w stylu przestawnym i grupować wynagrodzenie i wiek w określonych zakresach, takich jak poniżej:
Napisałem ten skrypt i zdefiniowałem zakresy:
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
Moje zakresy są zakodowane na stałe i zdefiniowane. Kiedy kopiuję dane do Excela i przeglądam je w tabeli przestawnej, wygląda to tak jak poniżej:
Mój problem polega na tym, że chcę utworzyć kostkę, przekształcając tabelę klientów w tabelę faktów i tworząc tabele 2 wymiarów SalaryDim i AgeDim .
SalaryDim tabeli ma 2 kolumny ( SalaryKey, SalaryRange ) i AgeDim tabela jest podobna ( ageKey, ZakresWieku ). Tabela faktów mojego klienta zawiera:
Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim
Nadal muszę zdefiniować zakresy w tych wymiarach. Za każdym razem, gdy podłączam element przestawny Excela do mojej kostki, widzę tylko te zdefiniowane na stałe zakresy.
Moje pytanie dotyczy tego, jak dynamicznie definiować zakresy bezpośrednio z tabeli przestawnej, bez tworzenia wymiarów zakresu, takich jak AgeDim i SalaryDim . Nie chcę utknąć tylko w zakresach zdefiniowanych w wymiarze.
Określony zakres to „0–25”, „26–30”, „31–50”. Może chciałbym zmienić to na „0-20”, „21-31”, „32-42” itd., A użytkownicy za każdym razem żądają różnych zakresów.
Za każdym razem, gdy go zmieniam, muszę zmieniać wymiar. Jak mogę ulepszyć ten proces?
Byłoby wspaniale mieć rozwiązanie zaimplementowane w kostce, aby dowolne narzędzie klienckie BI łączące się z kostką mogło zdefiniować zakresy, ale nie miałbym nic przeciwko, jeśli istnieje dobry sposób używania tylko Excela.