对比数据库类型:
关系型数据库:Oracle 11g
多维数据库:智达方通多维数据库 Intcube Booster v4.5
多维数据模型信息:
维度:6个:科目,组织,期间,场景、版本、产品
对比应用场景:
1、聚合计算SQL方式:脚本字符数:6919
MDX方式:脚本字数:204
2、期间累计场景SQL方式:脚本字符数:2260
MDX方式:脚本字符数:242
3、上年同期增长额场景SQL方式:脚本字符数:1658
MDX方式:脚本字符数:248
4、预实增减比场景SQL方式:脚本字符数:1628
MDX方式:脚本字符数:274
比较以上四种应用场景下的 表查询脚本,关系型数据库的SQL脚本,复杂度远高于多维数据仓库MDX脚本。脚本的可读性也是MDX更高,更易于业务人员自行维护。
以下为测试场景详情:
数据库实例
科目表,总行数:358
组织表,总行数:15
期间表,总行数:37
场景表,总行数:29
版本表,总行数:8
产品表,总行数:32
事实数据表,总行数:1000000
常见分析场景对比
一、聚合场景
分析场景描述:
备注:因篇幅原因此处截图列上只有2022年1季度及其子项
示例:
SQL实现
聚合查询条件:
- 四季度+销售费用合计聚合查询条件:
- 四季度+销售费用合计子项聚合查询条件:
- 四季度子项+销售费用合计聚合查询条件:
- 四季度子项+销售费用合计子项因SQL较长,
- 此处不再列出,详细查看附录中SQL脚本case1.sql。
- 备注:如展示效果要求的层级越深,则所需的SQL越多。
MDX实现
二、期间累计场景对比
分析场景描述
示例:
SQL实现
- 查询期间2022年下有哪些子项
2.查询每个季度下的子项(此处列出其中一个季度的SQL)
3.查询事实数据
4.此场景下的例子除期间维度外只使用的一个成员,如复杂分析情况下,SQL会更加复杂。
MDX实现
三、上年同期增长额场景对比
分析场景描述
示例:
SQL实现
- 查询期间该层级的成员
2.查询[2022年]和上年[2021]的预算数据
查询结果:
MDX实现
四、预实增减比场景对比
分析场景描述
示例:
SQL实现
- 查询期间该层级的成员
2.查询[2022年]和上年[2021]的预算,实际确认数据并进行计算
查询结果:
MDX实现
总结
● MDX查询对应的是多维视图,可以轻易的实现聚合查询,且根据多维场景优化,查询效率较高;而SQL对应的是关系视图,聚合查询的复杂度高很多,且查询效率很低。
● MDX的语法更为清晰和简单,提供丰富的函数和接口,方便用户学习和使用;而SQL接口暴露的语义模型相对简单,需要面对数据库表和列,想要实现效果需复杂的SQL逻辑,学习成本较高。
● MDX的计算表达能力更加丰富,能够更好的支持复杂分析场景。
附录:case1.sql
由于篇幅过长,下图仅展示部分内容,如想查看完整版,请登录北京智达方通科技有限公司官 ,查看文章:《企业软件中 表实现方式对比-SQL 表以及MDX 表对比》附录成果。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!