1

Y 軸に月があり、X 軸に前年と今年のクロス集計を作成したいと考えています。

                   2011  |  2012
Shop_1  |  Jan  |  123   |  456
           Feb  |  789   |  1011
           ...  |  ...   |  ...
           Dez  |  234   |  454  (for the current year, the future months are either filled with predicted numbers or NULL)
----------------------------------
Shop_2  |  Jan  |  264   |  23409
           ...  |  ...   |  ...
           Dez  |  234   |  454

データ ソースはリレーショナルなので、毎年 2 つのクエリ アイテムを作成しました。SQL では次のようになります。

SELECT 
shop, month, numberOfOrders 
FROM myFactTable 
INNER JOIN Dim_date ...
INNER JOIN Dim_shop ...
WHERE Dim_date.year = 2012

次に、これら 2 つのクエリを 3 つの接続で結合します。

  • year2012query.Shop =year2011query.Shop
  • year2012query.Month =year2011query.Month
  • year2012query.Year >year2011query.Year

カーディナリティを両側で 0..n に設定してouter join. カーディナリティで他の可能性を試しましたが、何も機能しません。問題は、現在の月である 4 月までの月しか取得できないことです。そのため、機能しOUTER JOINていません。

そこで、Framework Manager モデルのカーディナリティが役割を果たすのではないかと考えていました。これはスター スキーマであり、カーディナリティは常に

Dimension Table <--> Fact Table
1..1                 1..n

これを

Dimension Table <--> Fact Table
1..1                 0..n

レポートのパフォーマンスが許容できなくなり、結果が奇妙になるという影響がありました。

                   2011  |  2012
           Apr  |        |
           May  |        |
           Jun  |        |
           ...  |        |
           Dez  |        |
----------------------------------
Shop_1  |  Jan  |  123   |  456
           Feb  |  789   |  1011
           Mar  |  123   |  123
           Apr  |  234   |  454  
----------------------------------
Shop_2  |  Jan  |  264   |  23409
           Feb  |  7123  |  1011
           Mar  |  1223  |  123
           Apr  |  3445  |  454  

昨年が完全に表示されるようにするにはどうすればよいですか?

4

1 に答える 1

0

自力で解決できました。FM モデルのカーディナリティは変更されません

Dimension (1..1) <--> (1..n) Fact

私の間違いは、今年と過去のクエリに参加するときに、今年の月を選択することでした。

于 2012-04-17T11:38:57.977 に答える