Saiku的基本使用介绍(三)
Saiku的基本使用介绍(这里都是使用Admin用户登录系统)
1、启动安装好的Saiku ( ./start-saiku.sh ) ,浏览器使用访问系统 http://localhost:8080 ,然后使用 admin admin 登录系统
2、 登录系统后,首先点击 A ,进入管理控制平台(添加数据源信息)
2.1 根据需要连接的数据源信息中的数据(本文中连接Mysql数据库),编写对应的schame文件,(这里schame文件的配置了两个cube ,第一个是一张表一个cube配置,第二个是双表对应一个cube)
<Dimension> 标签定义维度信息
<Hierarchy> 标签 定义层次信息
<Level>标签中定义具体的列信息 (对应数据库中的 字段名)
<Measure> 标签定义度量信息 注意度量信息中指定的字段需为数据类型,需要进行运算
<Schema> 标签定义当前文件在saiku中的数据源信息名称
<Cube> 标签定义数据信息(可以理解为用于展示数据的名称)
<Table> 标签 定义数据库中的表名
一个Schame文件中可以配置多个Cube,
一个Cube 中可以配置多个Dimension ,多个Table,多个Measure
一个Dimension中可以配置多个Level信息
MDX的数据类型:String Numeric Integer Boolean Time Timestamp (在配置中使用datatype字段指定)
report.xml 文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Schema name="report"> <!-- 测试数据量 -->
<Cube name="测试数据量1w"> <Table name="rs_testdata" />
<Dimension name="序号" foreignKey="ID" >
<Hierarchy hasAll="true" primaryKey="ID" allMemberName="序号" >
<Level name="序号" column="ID" uniqueMembers="true" />
</Hierarchy>
</Dimension>
<Dimension name="SEQ" foreignKey="ID" >
<Hierarchy hasAll="true" primaryKey="ID" allMemberName="SEQ" >
<Level name="SEQ" column="seq" uniqueMembers="true" />
</Hierarchy>
</Dimension>
<Dimension name="姓名" foreignKey="ID" >
<Hierarchy hasAll="true" primaryKey="ID" allMemberName="姓名" >
<Level name="姓名" column="name" uniqueMembers="true" />
</Hierarchy>
</Dimension> <Measure name="序號" column="ID" aggregator="sum" /> </Cube> <!-- 匯總數據表 summaryKpi -->
<Cube name="SummaryKpi匯總數據"> <Table name="rs_kpisummary_data" />
<Dimension name="序號" foreignKey="ID" >
<Hierarchy hasAll="true" primaryKey="ID" allMemberName="序號" >
<Level name="序號" column="ID" uniqueMembers="true" />
</Hierarchy>
</Dimension> <Dimension name="維度" foreignKey="kpiKey" ><!-- 这里的foreignKey指的是rs_kpisummary_data表中的kpiKey-->
<Hierarchy hasAll="true" allMemberName="維度信息" primaryKey="kpiKey" primaryKeyTable="rs_kpisummary_template"> <!--这里的primaryKey指的是rs_kpisummary_template表中的kpiKey-->
<Table name="rs_kpisummary_template" />
<Level name="部門" table="rs_kpisummary_template" column="department" nameColumn="department" uniqueMembers="false" ></Level>
<Level name="類別" table="rs_kpisummary_template" column="kpiType" nameColumn="kpiType" uniqueMembers="false" ></Level>
<Level name="序號" table="rs_kpisummary_template" column="kpiSeqno" nameColumn="kpiSeqno" uniqueMembers="false" ></Level>
<Level name="指標名稱" table="rs_kpisummary_template" column="kpiName" nameColumn="kpiName" uniqueMembers="false" ></Level>
<Level name="指標說明" table="rs_kpisummary_template" column="kpiDesc" nameColumn="kpiDesc" uniqueMembers="false" ></Level>
<Level name="備註" table="rs_kpisummary_template" column="remarks" nameColumn="remarks" uniqueMembers="false" ></Level>
<Level name="達標率" table="rs_kpisummary_template" column="rate" nameColumn="rate" uniqueMembers="false" ></Level>
<Level name="指標明細區分字段A" table="rs_kpisummary_template" column="kpiKey" nameColumn="kpiKey" uniqueMembers="false" ></Level>
</Hierarchy>
</Dimension> <Dimension name="統計日期" foreignKey="ID" >
<Hierarchy hasAll="true" primaryKey="ID" allMemberName="統計日期" >
<Level name="統計日期" table="rs_kpisummary_data" column="countdate" type='Date' uniqueMembers="false" />
</Hierarchy>
</Dimension> <Measure name="周完成量" table="rs_kpisummary_data" column="weekFinishNum" datatype="Integer" aggregator="sum" />
<Measure name="周總量" table="rs_kpisummary_data" column="weekTotalNum" datatype="Integer" aggregator="sum" />
<Measure name="周KPI" table="rs_kpisummary_data" column="weekKPI" datatype="Numeric" aggregator="sum" />
<Measure name="月完成量" table="rs_kpisummary_data" column="monthFinishNum" datatype="Integer" aggregator="sum" />
<Measure name="月總量" table="rs_kpisummary_data" column="monthFinishNum" datatype="Integer" aggregator="sum" />
<Measure name="月KPI" table="rs_kpisummary_data" column="monthKPI" datatype="Numeric" aggregator="sum" /> </Cube> </Schema>
2.2 将编写的report.xml文件上传到saiku,上传步骤 :
1. 选中 add Schame
2. 选中刚刚编写的report.xml
3. 点击上传(Upload)
2.3 添加数据源信息:
输入数据库相关信息,如果是第一次使用记得将对应的数据库驱动包放入 saiku的lib目录下 ( saiku-latest\saiku-server\tomcat\webapps\saiku\WEB-INF\lib )
3、 新建查询 ,开始使用saiku展示数据
前面两个是saiku自带的元数据信息
report: 就是我们配置的Schame中的数据信息
report目录下的数据就是我们配置的Cube信息
3.1 选中配置好的Cube SummaryKpi匯總數據
3.2 界面分析:简单的操作方法是通过拖拽指标信息以及维度信息实现数据的展示,请注意每个数据只能被拖到一个展示框哦!
(比如:序号拖拽为列信息,就不能再把序号拖拽为行信息了,如果需要序号变为行则必须将列下方的序号删除 再次重新拖拽)
3.3 以图表的形式展示数据效果如图:
3.4 指标相关信息分析: 右击指标,效果如图:(可一 一点击进行试验)
Columns | Measures : 先展示列数据,然后将指标信息在列数据后展示 (指标信息以列数据格式展示)
Measures| Columns: 先展示指标信息数据,然后将列信息数据在指标数据后展示 (指标信息以列数据格式展示)
Rows | Measures : 先展示行数据,然后将指标信息在行数据后展示 (指标信息以行数据格式展示)
Columns | Rows: 先展示指标信息数据,然后将行数据信息在指标数据后展示 (指标信息以行数据格式展示)
Reset Deafult: 回复为默认的数据展示形式 (Columns | Measures )
3.5 查看当前数据的汇总计算数据信息:(点击右侧的图标,再点击一次会恢复到之前的Table数据)
3.6 对数据进行筛选:(行数据 以及 列数据 中 的每一项数据都可以使用此方法进行筛选)
3.6.1 筛选数据查询使用示例:
1 输入查询关键字 : 保
2 点击 Pre-Filter on Server 然后就会得到查询结果
4. 数据筛选示例:
1 选定数据添加到右侧 Used members
2 (可选) 设置参数名 sectionParam
3 点击OK
数据筛选之后的效果:
Parameter 参数使用效果:
5 添加指标信息:
1 点击指标右侧的添加
2. 填写弹出框中的数据信息
Name : 指标名称
Formula : 对指标或者维度进行计算的 MDX表达式
5.1 添加新指标示例:
此表达式的含义: 判断维度信息 部门 所对应的值中是包含 新業務 这三个字,如果包含 新指标中的 部门判断值则为 新單,如果不包含 部門判斷值則為 非新單。
IIf(Logic_Expresssion,value1,value2) : 這是一個If判斷,如果前面的表达式为真,则取第一个值 value1,如果表达式的结果为false ,则取第二个值 value2.
Instr(String1,String2) : 这个函数用来判断字符串的包含关系,String1表示比较的字符串,String2是被比较的字符串。(这里是判断String1中是否包含String2字符串,返回的是下标信息),结果大于0 表示包含,否则就表示不包含。
IIf(Instr([維度].[維度].[部門].CurrentMember.Name,"新業務")>0,"新單","非新單")
ps: 记得 Dimension 选择 Measures
添加新指标后的效果:
以上就是saiku的基本操作啦,接下来更深层次的操作待后期研究,最后我们编辑好一个文件后要记得保存哦!
6 保存数据文件
1. 点击保存标
2. 选中存储目录 datasources
3. 输入保存的文件名 save
4. 点击 save
查看我们保存的数据信息:
Saiku数据显示格式问题1: null值显示控制
默认显示为 #null
可通过修改配置文件 mondrain.properties 文件,让列数据为空时显示需要的数据
文件路径: saiku-server\tomcat\webapps\saiku\WEB-INF\classes\mondrain.properties
## 注意这是部分配置信息 ###############################################################################
# Property that determines how a null member value is represented in the
# result output.
# AS 2000 shows this as empty value
# AS 2005 shows this as "(null)" value
#
#mondrian.olap.NullMemberRepresentation=#null
修改之后的文件为:
## 注意这是部分配置信息 ###############################################################################
# Property that determines how a null member value is represented in the
# result output.
# AS 2000 shows this as empty value
# AS 2005 shows this as "(null)" value
#
mondrian.olap.NullMemberRepresentation=
然后重新启动Saiku ,再查看数据就会发现所有为null的数据信息都会不显示任何内容。
Saiku的基本使用介绍(三)的更多相关文章
- Lucene.Net 2.3.1开发介绍 —— 三、索引(七)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(七) 5.IndexWriter 索引这部分最后讲的是IndexWriter.如果说前面提到的都是数据的结构,那么IndexWriter ...
- Lucene.Net 2.3.1开发介绍 —— 三、索引(六)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(六) 2.2 Field的Boost 如果说Document的Boost是一条线,那么Field的Boost则是一个点.怎么理解这个点呢 ...
- Lucene.Net 2.3.1开发介绍 —— 三、索引(五)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(五) 话接上篇,继续来说权重对排序的影响.从上面的4个测试,只能说是有个直观的理解了.“哦,是!调整权重是能影响排序了,但是好像没办法来 ...
- Lucene.Net 2.3.1开发介绍 —— 三、索引(四)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(四) 4.索引对搜索排序的影响 搜索的时候,同一个搜索关键字和同一份索引,决定了一个结果,不但决定了结果的集合,也确定了结果的顺序.那个 ...
- Lucene.Net 2.3.1开发介绍 —— 三、索引(三)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(三) 3.Field配置所产生的效果 索引数据,简单的代码,只要两个方法就搞定了,而在索引过程中用到的一些类里最简单,作用也不小的就是F ...
- Lucene.Net 2.3.1开发介绍 —— 三、索引(二)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(二) 2.索引中用到的核心类 在Lucene.Net索引开发中,用到的类不多,这些类是索引过程的核心类.其中Analyzer是索引建立的 ...
- Lucene.Net 2.3.1开发介绍 —— 三、索引(一)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(一) 在说索引之前,先说说索引是什么?为什么要索引?怎么索引? 先想想看,假如现在有一个文本,我们会怎么去搜索.比如,有一个string ...
- {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证
Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
随机推荐
- 牛客OI周赛6-提高组 B 践踏
践踏 思路: 如果k不为0, 那么就是对k取模意义下的区间更新, 单点查询 否则, 就是普通的区间更新, 单点查询 代码: #pragma GCC optimize(2) #pragma GCC op ...
- php解析处理java的btye字节;php解析处理java的ByteArrayOutputStream字节流/数据流
php解析处理java的btye字节:php解析处理java的ByteArrayOutputStream字节流/数据流 一般java的字节流: 就是t public class Test { publ ...
- 20171113xlVba指定文件夹多簿多表分表合并150
'2017年11月13日 'Next_Seven '功能:文件夹对话框指定文件夹下,合并(复制粘贴)每个Excel文件内的指定子表内容, '在名为"设置"的工作表A列 输入汇总子表 ...
- Post四种Content-Type
application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了.浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 app ...
- 区间逼近 牛客寒假1 小a的排列
做法:模拟 萌区间也就是这个区间里的数是一段连续的数 做法的话是先找出题目x,y的位置,记为l,r,然后找出l,r内的最大最小值,又因为萌区间要求数是连续的,就从这段连续数最小的开始到最大的,确定缩放 ...
- Web测试要点
由于本人工作接触Web测试,所以我从网上找的资料,学习了解web测试哪些内容,然后自己整理汇总的随笔,如文章中有不足的地方,请大家多多指教:或者文章内容与他人相似,望见谅. web是什么?(转载: ...
- spring boot(二)web综合开发
上篇文章介绍了Spring boot初级教程:spring boot(一):入门,方便大家快速入门.了解实践Spring boot特性:本篇文章接着上篇内容继续为大家介绍spring boot的其它特 ...
- CRM UI 打印PDF
这是项目上看到的绝技^_^ 1.画SF.这步就不说了 2.确定参数,写SF打印PDF函数 FUNCTION zsrv_print_to_pdf . *"------------------- ...
- 利用tablespace特性将数据库移动到新磁盘
目前开发一台EC2的PostgreSQL服务器的磁盘空间已经严重不足,该磁盘非LVM,所以不考虑磁盘扩容方法,研发希望可以分区/data/02对应的/dev/xvdl1磁盘分担部分数据库的数据,这样也 ...
- myeclipse debug模式 报错source not found
myeclipse debug模式下,启动报错 source not found:SignatureParser.current() line: 解决方法:将debug视图下的右上方的jar有断点的地 ...