记天溯实习期间关于mondrian的开发小结

本文是对在天溯实习期间使用mondrian框架开发OLAP服务引擎的总结。主要任务包括:解析与生成JSON报文,建立数据仓库,生成逻辑模型以及执行MDX查询。数据仓库基于mysql,逻辑模型通过schema-workbench工具生成。详细内容涉及JSON格式处理、数据结构设计、建表语句以及MDX查询操作。
摘要由CSDN通过智能技术生成

点击打开链接关于OLAP服务引擎的模块开发,已经大致完成,此次工作也可以放一段落,迎来五一小长假。

本文对本次开发做一次小的总结,整个eway项目的整体架构图如下所示,OLAP引擎这块用的是开源框架mondrian,也是本人负责的。


那么本模块所要做的事情,就是接受从云端服务总线上传输过来的JSON格式,并进行相应的业务逻辑判断、查询并返回JSON格式。

因此,模块的开发任务,如下:

1.JSON报文的解析与生成;

2.数据仓库的建立(mysql关系数据库中建立相对应的事实表和维度表)

3.逻辑模型的生成(通过schema-workbench工具生成,它最终是一个xml文件)

4.执行相关MDX语句,对逻辑模型进行查询操作。

一、任务的细化,JSON格式的定义及解析,我们采用的是开源框架FastJSON,它提倡建立与JSON格式相对应的数据结构

{
    "Olaps": [{
        "tenant": "tiansu",
        "measurements": [
            {
                "measureName":"sum",
		"measureName":"avg"
            }
        ],
        "dimentions": [
            {
		"dim":"region",
                "Levels": [
                    {
                        "province": "江苏",
                        "city": "南京",
                        "district": "玄武",
                        "building": "1号建筑",
                        "area": "1号区域"
                    }
                ]
            },
            {
		"dim":"time",
                "Levels": [
                    {
                        "year": "2015",
                        "month": "1",
			"week":"2",
			"day":"21",
			"hour":"13",
			"minute":"24"
                    }
                ]
            },
            {
		"dim":"category",
		"hierarchys":[{"hierarchy":"category_by_type"}],
                "Levels": [
                    {
                        "categoryTypeName": "动力"
                    }
                ]
            }
        ],
	"conditions":[
	    {
		"dim":"region",
		"hierarchys":[{"hierarchyName":"region_by_area"}],
                "Levels": [
                    {
                        "province": "江苏",
                        "city": "南京",
                        "district": "玄武",
                        "building": "1号建筑",
                        "area": "1号区域"
                    }
                ]
            },
            {
		"dim":"time",
		"hierarchys":[{"hierarchyName":"time_by_day"},{"hierarchyName":"time_by_week"}],
                "Levels": [
                    {
                        "year": "2015",
                        "month": "1",
			"week":"2",
			"day":"21",
			"hour":"13",
			"minute":"24"
                    }
                ]
            },
            {
		"dim":"category",
		"hierarchys":[{"hierarchyName":"category_by_type"}],
                "Levels": [
                    {
                        "categoryTypeName": "动力"
                    }
                ]
            }
	]
    }
    ]
}
{"Olaps":[ ]}对于这种数据结构,我是这样来构造它的javaBean的,首先通过类Eway来表示{ },并将olaps这个数组包含进去。[ ]表示数组。

而对与{"Levels":[{""year": "2015", "month": "1" } ] }这种形式的数据结构,我们用list<Map<String,String>>来表示。因为数组中存在太多的变量。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值