多事實表 SQL實現和SSAS中MDX實現的差別

 

如圖,資產負債視圖是事實表,損益表也是事實表。都包含年、月、組織、帳簿信息。html

SQL如何實現呢?架構

簡單粗暴,事實事實表串事實表,Full Joinpost

select 
        損益視圖.年
        ,損益視圖.年月
        ,損益視圖.期間
        ,損益視圖.帳簿名稱
        ,損益視圖.組織編碼
        ,損益視圖.組織名稱    
        ,損益視圖.項目名稱 損益項目
        ,損益視圖.本期發生數 損益本期
        ,資產負債視圖.項目名稱 資產項目
        ,資產負債視圖.年初數 資產年初
        ,資產負債視圖.期末數 資產期末
 
                    from 損益視圖
                            full join 資產負債視圖
                                on 損益視圖.年月 = 資產負債視圖.年月
                                    and 損益視圖.年 =資產負債視圖.年
                                    and 損益視圖.期間 = 資產負債視圖.期間
                                    and 損益視圖.帳簿名稱 = 資產負債視圖.帳簿名稱
                                    and 損益視圖.組織編碼 = 資產負債視圖.組織編碼
                    where 損益視圖.帳簿名稱 ='藍海電子公司主帳簿'

 

SSAS 表格模式中藉助視圖模式看編碼

不能直接事實表串事實表,必須經過中間的維度表來關聯。url

SELECT 
NON EMPTY {Hierarchize(
                {[Measures].[年初數 的總和], [Measures].[期末數 的總和], [Measures].[本期發生數 的總和]} 
                    )
          }
    ON COLUMNS,

    NON EMPTY {Hierarchize(
{
    CROSSJOIN({[年月表].[時間].[]}
                ,CROSSJOIN({[年月表].[月份].[月份]}
                    ,CROSSJOIN( {[組織架構表].[組織編碼].[組織編碼]}, 
                                    CROSSJOIN({[組織架構表].[組織名稱].[組織名稱]}
                                                ,CROSSJOIN({[帳簿表].[帳簿名稱].[帳簿名稱]}
                                                ,CROSSJOIN({[損益視圖].[項目名稱].[項目名稱]} ,{[資產負債視圖].[資產項目].[資產項目]})
                                                            )
                                                ) 
                                )
                            )

              )

}
    )
          }
 ON ROWS
FROM [FinBPCube]

 

SSAS系列隨筆

相關文章
相關標籤/搜索