私はデータキューブのファクトテーブルを設計中ですが、正しく集計する方法がよくわからないメジャーがあります。次のSQLコードは、小さなサンプルファクトテーブルとディメンションテーブルを作成します。
create table FactTable (
ID int,
Color int,
Flag int)
insert into FactTable (ID, Color, Flag) values (1, 'RED', 1)
insert into FactTable (ID, Color, Flag) values (1, 'WHITE', 0)
insert into FactTable (ID, Color, Flag) values (1, 'BLUE', 1)
insert into FactTable (ID, Color, Flag) values (2, 'RED', 0)
insert into FactTable (ID, Color, Flag) values (2, 'WHITE', 0)
insert into FactTable (ID, Color, Flag) values (2, 'BLUE', 1)
insert into FactTable (ID, Color, Flag) values (3, 'RED', 1)
insert into FactTable (ID, Color, Flag) values (3, 'WHITE', 1)
insert into FactTable (ID, Color, Flag) values (3, 'BLUE', 1)
create table ColorDim (
CID int,
Color int)
insert into ColorDim (CID, Color) values (1, 'RED')
insert into ColorDim (CID, Color) values (2, 'WHITE')
insert into ColorDim (CID, Color) values (3, 'BLUE')
FactTableとColorDimは、FactTable.Color=ColorDim.Colorで結合されます。キューブには、赤、白、または青(少なくとも1つの色)を含むオブジェクトIDをカウントする「Patriotic」と呼ばれるメジャーが必要です。必要な出力は次のとおりです。
- キューブを参照するときに、ユーザーが愛国的なメジャーをプルする(ディメンションをプルしない)場合、3つの色の少なくとも1つを含む2つのID(つまり、1と3)があるため、表示される合計は2になります。ID 1は、2つの色がありますが、愛国心の合計値に1を与える必要があることに注意してください。
ユーザーが愛国的なメジャーを色ディメンションで参照すると、次のような表が表示されます。ID 1は、1がREDカウントに、1がBLUEカウントに寄与することに注意してください。
+ -------- + ----------- +
| 色| 愛国心が強い|
+ -------- + ----------- +
| 赤| 2 |
| ホワイト| 1 |
| ブルー| 2 |
+ -------- + ----------- +
(このWebアプリを使用してテーブルを作成しようとしましたが、間隔が正しくないようです。十分に読みやすく、理解できるといいのですが。)
これは非常に基本的なキューブの設計状況であると確信していますが、これまでキューブを操作したことはなく、使用したメジャーは通常、単純な列のSUM、または列のSUMの積などです。感謝します。
(関連する場合は、MS SQL Server 2008でファクト/ディメンションテーブルを作成するSQLクエリを実行し、MS Visual Studio 2008でキューブ自体を設計します。)