OLAP分析应用(十)-动态生成sql(上)-去表结构、去代码版

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/wh_xia_jun/article/details/92656112

有人总结了olap发展的5大瓶颈

1.OLAP产品封闭性——前端功能的受限和不易集成;

2.MDX不如SQL普及——无论在学习资源还是普及程度上,SQL还是拥有最多人群的数据查询技术;

3.xOLAP满足不了大数据的分析——大数据环境中不能满足第三原则(高速响应);

4.OLAP预建模瓶颈——当业务需求变化快或业务关联更新时,模型需IT人员重构,较低变更效率影响了使用感受;

5.OLAP可视化能力弱——可视化能力不够。

前面6-9节,我整理了静态的mdx语句。静态mdx总结还有缺失,后面慢慢补充。为解决OLAP预建模瓶颈,我理解就是要动态建模,实现上,就是要动态构建mdx语句,我们在动态构建sql上,有较多的经验,这里我们把动态构建sql先总结一遍,然后,再总结动态构建mdx。

动态构建sql

前期准备:

定义数据元(字段)--->数据集---->定义数据集间关系

数据元

界面

添加数据元:

这里,数据元区域的可选择项目为单据主表区、单据明细区,因为我们单据主要都是主从结构的。

来源类型分为:

显示方式:

这里,引用系统字段后面就是硬编码写死的。

引用表字段的应用,举个例子,医院里很多单据需要引用病人的基本信息,基本信息是病人首次入院的时候,登记的,这个时候,就可以运用引用表字段了。

当初老夫设计这套体系的时候,其实是有点想把整个系统往云应用方面引导的,但实践过程中,一直不是太成功,也没有时间深入推进。

我想,这是个古老的东西了,20年前就有了,这次总结后,还是搞新的东西去吧。

表结构:

实现方式:略

后期需要改进的地方?我们定义数据元属性的地方是写死的,不过,如果不需要改动,也无所谓。其他问题?

数据集:

定义表及表字段

界面:

编辑数据集:

新增加数据集:

数据集定义中,有个“是否为票据”选项,可以定的更为抽象一点,方便对定义的表的用途进行分类。例如,可以另外弄一个字典表,方便读取?

这里有个编辑数据元信息按钮,点击弹出如下界面:

这里弹出一个数据集所有字段,主要方便一次性调整是否可见、是否主键等,

关联表名、关联字段,实际应用中,放弃了,为什么放弃使用,原因?忘记了。

外键的目的在于:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。

表结构:

实现:

这里要干2件事情:

1、动态创建表

  •       动态创建表sql,动态拼sql,要拼字段名称、字段类型、长度、默认值、是否为空等5个要素。
  •       动态创建备注 comSql,因为有多条表注释信息,因此把它放到一个集合中,批量提交数据库执行。
  •       动态创建约束,这里加了三类约束:主键约束、非空约束、外键约束联合主键好像完全没有考虑?后面如果还有机会用到类似的东西,还是要完善一下这一点,其实,设计上参考数据库本身的设计就行,而不是简单的在此勾选,一个补救的办法是,单独弄一个联合主键的维护界面,反正都是alter语句。

2、保存数据集元数据信息

动态创建表语句如下:

我们把数据类型放到了字典表中,这样做的目的,当初是为了匹配不通过大的数据库,动态创建表语句当中,数据类型就是查的这个字段表。

问题:

数据集列表是否需要分个类,这样,当表有成千上万的时候,方便管理?

数据集间的关系:

界面:

 

表结构:

实现:略

问题:

数据集关系列表缺少查询!如果关系条目多,查询不方便。

这里定义了数据元、数据集,只是定义了表结构,还要和业务挂钩。

我们这边的业务就是票种,得把票种和数据集关联起来:

存储票种和数据集关联的表结构:

前一节:同比、环比、下钻

下一节:动态sql(下)

猜你喜欢

转载自blog.csdn.net/wh_xia_jun/article/details/92656112