企业软件中 表实现方式对比-SQL 表以及MDX 表对比

对比数据库类型:

关系型数据库: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实现

聚合查询条件:

  1. 四季度+销售费用合计聚合查询条件:
  2. 四季度+销售费用合计子项聚合查询条件:
  3. 四季度子项+销售费用合计聚合查询条件:
  4. 四季度子项+销售费用合计子项因SQL较长,
  5. 此处不再列出,详细查看附录中SQL脚本case1.sql。
  6. 备注:如展示效果要求的层级越深,则所需的SQL越多。

MDX实现

二、期间累计场景对比

分析场景描述

示例:

SQL实现

  1. 查询期间2022年下有哪些子项

2.查询每个季度下的子项(此处列出其中一个季度的SQL)

3.查询事实数据

4.此场景下的例子除期间维度外只使用的一个成员,如复杂分析情况下,SQL会更加复杂。

MDX实现

三、上年同期增长额场景对比

分析场景描述

示例:

SQL实现

  1. 查询期间该层级的成员

2.查询[2022年]和上年[2021]的预算数据

查询结果:

MDX实现

四、预实增减比场景对比

分析场景描述

示例:

SQL实现

  1. 查询期间该层级的成员

2.查询[2022年]和上年[2021]的预算,实际确认数据并进行计算

查询结果:

MDX实现

总结

● MDX查询对应的是多维视图,可以轻易的实现聚合查询,且根据多维场景优化,查询效率较高;而SQL对应的是关系视图,聚合查询的复杂度高很多,且查询效率很低。

● MDX的语法更为清晰和简单,提供丰富的函数和接口,方便用户学习和使用;而SQL接口暴露的语义模型相对简单,需要面对数据库表和列,想要实现效果需复杂的SQL逻辑,学习成本较高。

● MDX的计算表达能力更加丰富,能够更好的支持复杂分析场景。

附录:case1.sql

由于篇幅过长,下图仅展示部分内容,如想查看完整版,请登录北京智达方通科技有限公司官 ,查看文章:《企业软件中 表实现方式对比-SQL 表以及MDX 表对比》附录成果。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月18日
下一篇 2022年10月18日

相关推荐