点击打开链接关于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>>来表示。因为数组中存在太多的变量。