Tag - OpenBI

OpenBI Mondrian MDX Saiku    2017-03-26 22:03:46    903

简述

整理此文章方便大家做测试(手写Mondrian Schema自测),不必每次都向saiku上传文件了

关键文件

  • foodmart4.xml 测试对应的schema文件
  • foodmart-sql.zip 测试对应的数据库脚本

maven项目:

pom文件

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>cn.firewarm</groupId>
  5. <artifactId>testMondrian</artifactId>
  6. <packaging>war</packaging>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>testMondrian Maven Webapp</name>
  9. <url>http://maven.apache.org</url>
  10. <repositories>
  11. <repository>
  12. <id>mine</id>
  13. <name>public Releases</name>
  14. <layout>default</layout>
  15. <url>http://nexus.liuyingguang.cn:8081/nexus/content/groups/public/</url>
  16. </repository>
  17. <repository>
  18. <id>mine-meteorite-bi-release</id>
  19. <
二次开发 saiku OpenBI    2017-03-26 21:55:55    1059

参考原文,略作修改:http://www.cnblogs.com/avivaye/p/4881106.html

以上链接文章的思路是正确的,有略微的遗漏,saiku-beans.properties中也存在与用户相关的H2数据库配置,并且在id为“userDaoDataSource”的bean中有用到,为了避免出现问题,将其一并替换,并修改原文中部分配置到配置文件中

修改web.xml,将原有的与用户相关的h2数据库配置注释

  1. <context-param>
  2. <param-name>db.url</param-name>
  3. <param-value>jdbc:h2:../../data/saiku;MODE=MySQL</param-value>
  4. </context-param>
  5. <context-param>
  6. <param-name>db.user</param-name>
  7. <param-value>sa</param-value>
  8. </context-param>
  9. <context-param>
  10. <param-name>db.password</param-name>
  11. <param-value></param-value>
  12. </context-param>

修改saiku-beans.xml中与用户相关的h2数据库配置

  1. <bean id="h2database" class="org.saiku.database.Database" init-method="init">
  2. <property name="datasourceManager" ref="repositoryDsManager"/>
  3. <property name="datasourcetype" value="mysql" /><!-- add by liuyg -->
  4. <property name="url" value="${userdao.url}" />
  5. <pr
OpenBI saiku 二次开发    2017-03-26 21:54:22    724

总览

saiku的社区版本二次开发一直以来都是比较费劲的,最近saiku社区版在新版本中,引入了license的机制,于是我选了个3.8稳定版本(release-3.8),且不需要license的版本作为基础,将代码合并在一个项目中,以简化二次开发和源码研究。

完成以下步骤后的结果是:

作为一个普通maven项目,可以使用eclipse部署在tomcat中,debug等各种玩耍

操作步奏

  1. 创建新项目saiku3image

  2. 在创建的项目中,分别创建resource目录:“src/main/saiku-web”,“src/main/saiku-service”,“src/main/saiku-olap-util”,并将saiku-core下的相应代码(java目录下和resources目录下的文件)分别copy到里面,

  3. 将saiku-webapp\src\main\webapp目录下的所有文件,覆盖到新建项目的webapp目录中

  4. 将编译过后的zip包中tomcat\webapps\下的ROOT目录中文件全部copy到新建项目的webapp目录中并修改/saiku3/src/main/webapp/js/saiku/Settings.js文件中的TOMCAT_WEBAPP值为“/saiku3”

  5. 将编译过后的zip包中saiku-server目录下的data和repository文件夹copy到项目的webapp目录中

  6. 修改saiku-beans.properties文件,修改所有“../../”的地方替换为“../webapps/saiku3/”;修改saiku-beans.properties文件,修改pluginpath为“../webapps/saiku3/js/saiku/plugins/”(20160614修改)

  7. 修改eclipse中tomcat的工��路径:参考如下文章
    http://blog.csdn.net/gsying1474/article/details/51597995

  8. 修改 Database.java中的init方法,注释loadEarthquakes();方法的调用,以保证代码启动(此方法的代码中有部分导

mondrian schema mdx OpenBI    2017-03-26 21:15:02    922

如下schema代码片段:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <Schema name="报表">
  3. <cube name="cube_qc_pass_item" caption="报表1" encoding="UTF-8">
  4. <table name="fact_qc_pass_record_item_join">
  5. <Dimension name="models" foreignKey="model_id" caption="模板">
  6. <Hierarchy hasAll="true" allMemberName="model_name" primaryKey="id" primaryKeyTable="dim_qc_model">
  7. <Table name="dim_qc_model" />
  8. <Level name="model_name" column="name" caption="模板"/>
  9. <Level name="model_id" column="id" caption="model_id"/>
  10. </Hierarchy>
  11. </Dimension>
  12. <Measure name="times" column="id" aggregator="count" formatString="#,###0" datatype="Numeric" caption="总量"/>
  13. </cube>
  14. </Schema>

我想要在使用mdx查询的时候,使用model_name显示,使用model_id作为查询条件限制某个model_id,该如何书写mdx语句?

已经有如下错误的mdx语句了

mdx查询语句1:

  1. SELECT
  2. NON EMPTY {Hierarchize({{[Measures].[times], [Measures].[notPass], [Measures].[pass]}})}
kettle mongo mysql OpenBI    2017-01-11 09:51:41    823

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。作为一个数据抽取工具,在建立数据仓库的过程中,免不了需要从不同的数据源中抽取到集中的数据仓库中,下面就拿mongodb抽取到mysql为例,简述抽取数据的步骤:

  1. 新建“转换”:test
  2. 在test中新建“MongoDB Input”,填写数据源信息等,其中有一点比较重要,fields标签页中,取消选中“Output single JSON field”。如下图:
    image
  3. 在test中新建“字段选择”,选择要转换的字段,如下图
    image
  4. 新建“插入/更新”,选择mysql的数据源、表等,选择字段对应关系
    image
  5. 然后依次画上相关的连线即可
    image
  6. 然后执行处理即可
5/5