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

数据源是关系型的,所以我每年创建两个查询项,在 SQL 中会是这样的:

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

然后我用 3 个连接加入这 2 个查询。

  • 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 回答