如图,资产负债视图是事实表,损益表也是事实表。都包含年、月、组织、账簿信息。

多事实表 SQL实现和SSAS中MDX实现的差异
    




SSAS系列随笔

SQL如何实现呢?

简单粗暴,事实事实表串事实表,Full Join

select 
        损益视图.年
        ,损益视图.年月
        ,损益视图.期间
        ,损益视图.账簿名称
        ,损益视图.组织编码
        ,损益视图.组织名称    
        ,损益视图.项目名称 损益项目
        ,损益视图.本期发生数 损益本期
        ,资产负债视图.项目名称 资产项目
        ,资产负债视图.年初数 资产年初
        ,资产负债视图.期末数 资产期末
 
                    from 损益视图
                            full join 资产负债视图
                                on 损益视图.年月 = 资产负债视图.年月
                                    and 损益视图.年 =资产负债视图.年
                                    and 损益视图.期间 = 资产负债视图.期间
                                    and 损益视图.账簿名称 = 资产负债视图.账簿名称
                                    and 损益视图.组织编码 = 资产负债视图.组织编码
                    where 损益视图.账簿名称 ='蓝海电子公司主账簿'

 

SSAS 表格模式中借助视图模式看

多事实表 SQL实现和SSAS中MDX实现的差异
    




SSAS系列随笔

不能直接事实表串事实表,必须通过中间的维度表来关联。

SELECT 
NON EMPTY {Hierarchize(
                {[Measures].[年初数 的总和], [Measures].[期末数 的总和], [Measures].[本期发生数 的总和]} 
                    )
          }
    ON COLUMNS,

    NON EMPTY {Hierarchize(
{
    CROSSJOIN({[年月表].[时间].[]}
                ,CROSSJOIN({[年月表].[月份].[月份]}
                    ,CROSSJOIN( {[组织架构表].[组织编码].[组织编码]}, 
                                    CROSSJOIN({[组织架构表].[组织名称].[组织名称]}
                                                ,CROSSJOIN({[账簿表].[账簿名称].[账簿名称]}
                                                ,CROSSJOIN({[损益视图].[项目名称].[项目名称]} ,{[资产负债视图].[资产项目].[资产项目]})
                                                            )
                                                ) 
                                )
                            )

              )

}
    )
          }
 ON ROWS
FROM [FinBPCube]

 

SSAS系列随笔

相关文章:

  • 2021-07-26
  • 2022-12-23
  • 2021-09-25
  • 2021-11-16
  • 2022-01-19
  • 2021-10-14
猜你喜欢
  • 2021-08-29
  • 2021-09-16
  • 2022-02-03
  • 2021-12-06
  • 2021-07-30
  • 2021-07-30
  • 2021-08-25
相关资源
相似解决方案