キューブを作成するたびに直面する問題があり、それを克服する方法をまだ見つけていません。
問題は、ディメンション内でハードコードすることなく、ユーザーがさまざまなものを自動的に定義できるようにする方法です。例で問題を説明します。
Customersというテーブルがあります:
これはテーブル内のデータです。
ピボットスタイルでデータを表示し、以下のように定義された範囲で給与と年齢をグループ化します。
このスクリプトを作成し、範囲を定義しました。
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にコピーしてピボットテーブルで表示すると、次のように表示されます。
私の問題は、Customersテーブルをファクトテーブルに変換してキューブを作成し、2つのディメンションテーブルSalaryDimとAgeDimを作成することです。
SalaryDimの表は、2列を有する(SalaryKey、SalaryRange)とAgeDimのテーブルは、(類似しているageKey、AgeRange)。私の顧客ファクトテーブルには、があります。
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のみを使用する良い方法があるかどうかは気にしません。