1、简介

前几篇博客已经介绍了saiku、mondrian、MDX和模式文件他们之间的关系,那么如何将它们串联起来,供产品人员使用哪?下面咱们一步一步的实现

2、建立数据表

建表语句参考:http://www.cnblogs.com/liqiu/p/5202708.html

模式图如下:

这是一个典型的事实表+维度表的星型数据结构!

3、建立模式文件

这里就不说具体细节啦,直接给出xml文件内容,感兴趣的同学可以直接载入进去即可

<Schema name="SaleSchema">
<Cube name="SalesCube" visible="true" cache="true" enabled="true">
<Table name="sale" schema="public">
</Table>
<Dimension type="StandardDimension" visible="true" foreignKey="cusid" highCardinality="false" name="dimCustomer">
<Hierarchy visible="true" hasAll="true" allMemberName="allCustomer" primaryKey="cusid">
<Table name="customer" schema="public">
</Table>
<Level name="gender" visible="true" column="gender" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension type="StandardDimension" visible="true" foreignKey="proid" highCardinality="false" name="dimProductType">
<Hierarchy visible="true" hasAll="true" allMemberName="allProduct" allMemberCaption="allProductTitle" primaryKey="proid" primaryKeyTable="product">
<Join leftKey="proid" rightKey="protypeid">
<Table name="product" schema="public">
</Table>
<Table name="producttype" schema="public">
</Table>
</Join>
<Level name="productId" visible="true" table="product" column="proid" nameColumn="proname" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="productTypeId" visible="true" table="producttype" column="protypeid" nameColumn="protypename" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Measure name="saleNumber" column="num" aggregator="sum" caption="NumTitle" visible="true">
</Measure>
<Measure name="saleAmount" aggregator="sum" caption="allSaleTitle" visible="true">
<MeasureExpression>
<SQL dialect="generic">
<![CDATA[(unitprice*num)]]>
</SQL>
</MeasureExpression>
</Measure>
<CalculatedMember name="avgPrice" caption="avgPriceTitle" dimension="Measures" visible="true">
<Formula>
<![CDATA[[Measures].saleAmount/[Measures].saleNumber]]>
</Formula>
<CalculatedMemberProperty name="formatString" value="$#,##0.00">
</CalculatedMemberProperty>
</CalculatedMember>
</Cube>
</Schema>

4、查询数据

写如下MDX语句验证数据准确性

select
{[Measures].saleNumber,[Measures].saleAmount,[Measures].avgPrice}
on columns,
{([dimProductType].[allProduct],[dimCustomer].[allCustomer])}
on rows
from [salesCube]

结果如下:

5、上传模式文件

打开saiku,上传模式文件即可

如果如图:

结合使用saiku、mondrian workbentch建立多维查询报表的更多相关文章

  1. 在Python中建立N维数组并赋初值

    在Python中,由于不像C++/Java这样的语言可以方便的用a[i][j]=0的方式,建立二维数组并赋初值,所以需要一个相对巧妙的方法. 可以用列表解析的方式,eg: >>> m ...

  2. 如何在C++中动态建立二维数组(转)

    http://blog.sina.com.cn/s/blog_7c073a8d0100qp1w.html http://blog.163.com/wujiaxing009@126/blog/stati ...

  3. python 建立多维列表

    今天用到在网上没有找到合适的思路,于是自己动手写了一个,作为记录. dpa = [] dpb = [] dpc = [] for i in range(21): dpa.append(0) for i ...

  4. Saiku对Measure(指标)查询结果进行计算后显示的方法

    在通过Saiku查询数据的时候,当需要改变查询结果的显示方式的时候,可以添加formatString属性,但是当需要计算查询结果的时候,则需要使用CellFormatter,使用方法如下: <M ...

  5. 教你用plsql建立索引加快查询oracle数据的速度

    http://jingyan.baidu.com/article/3f16e003cb9a0f2591c10324.html?qq-pf-to=pcqq.c2c PL/SQL Developer是一个 ...

  6. sqlite优化记录:建立索引加快查询速度

    凡是数据库中,索引的存在就是为了提高查询速度的,数据库的索引有点类似于书本上面的目录的概念,因为在英文中都是index,事实上也就是目录. 其算法应该叫做“倒排索引”,这个其实也类似于搜索引擎里面的基 ...

  7. Day4 数据库的建立||数据库对外查询||使用命令行来操作数据库

    ###数据库的创建 建立一个项目 先进行测试,测试新项目是否可以成功运行 创建一个PersonContrary包,并建立一个Person类实现BaseColumns借口,在此类中添加所有的表的列名,并 ...

  8. SQL 建立临时表进行查询

    SELECT min (maxrank) as minofmaxrank FROM (SELECT max(rank) as maxrank FROM tbl_core_staff WHERE st_ ...

  9. map对象建立家族姓氏查询

    题目:定义一个map对象,其元素的键是家族姓氏,而值是存储该家族孩子名字的vector对象.为这个map容器输入至少六个条目.通过基于家族姓氏的查询检测你的程序,查询应输出该家族所有孩子的名字. // ...

随机推荐

  1. Dynamic CRM 2013学习笔记(九)CrmFetchKit.js介绍:Fetchxml、多表联合查询, 批量更新

    CrmFetchKit.js是一个跨浏览器的一个类库,允许通过JavaScript来执行fetch xml的查询,还可以实现批量更新,分页查询等.目前已支持Chrome 25, Firefox 19 ...

  2. 分分钟用上C#中的委托和事件之窗体篇

    上次以鸿门宴的例子写了一篇名为<分分钟用上C#中的委托和事件>的博文,旨在帮助C#初学者迈过委托和事件这道坎,能够用最快的速度掌握如何使用它们.如果觉得意犹未尽,或者仍然不知如何在实际应用 ...

  3. 基于OWIN WebAPI 使用OAuth授权服务【客户端模式(Client Credentials Grant)】

    适应范围 采用Client Credentials方式,即应用公钥.密钥方式获取Access Token,适用于任何类型应用,但通过它所获取的Access Token只能用于访问与用户无关的Open ...

  4. 用AutoHotKey彻底解决“Ctrl键+鼠标滚动”时的缩放问题

    “Ctrl键+鼠标滚动”会造成代码编辑窗口的字体缩放,这是自Visual Studio 2010以来引入的一个新特性,也是一个恼人的问题,详见VS2010中尴尬的代码窗口缩放功能. 于是,每次安装Vi ...

  5. 常用的sql语言基础(1)

    数据文件:存放数据不能随便删除查看数据方式:select name from v$datafile;select file_name from dba_data_file; 控制文件:是一个二进制文件 ...

  6. NABCD竞争性需求分析

     1.  Need 需求 市面上关于各类记事本,时钟显示程序,图片显示程序,日历程序有很多,但是它们大多是零散的软件,不利于现在高集成的时代,我们所做的就是将各种功能合起来. 2. Approach ...

  7. 找出字符串中第一个不重复的字符(JavaScript实现)

    如题~ 此算法仅供参考,小菜基本不懂高深的算法,只能用最朴实的思想去表达. //找出字符串中第一个不重复的字符 // firstUniqueChar("vdctdvc"); --& ...

  8. JProfiler8 注册码序列号

    JProfiler_SN_8_x.txt 按默认选择"Single or evaluation license" Name 和 Company 随意 --------------- ...

  9. Windows对象操作:浏览器窗口信息

    属性(值或者子对象):opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null,可以利用这个属性来关闭源窗口. 属性:Windows.shuxing; 方法(函 ...

  10. iOS开发----调用地图导航

    注意:本文章下的代码有个别变量未知,所以是不能直接跑通的,我也是转别人的 在IOS6.0系统后,兼容iOS5.0与iOS6.0地图导航,需要分两个步骤 #define SYSTEM_VERSION_L ...