olap分析平台的设计与实现(十七)- springboot集成mondrian

Mondrian + JPivot环境配置和演示 本文主要讲解ROLAP,以及ROLAP的实现Mondrian的使用和部署问题。目前网上关于Mondrian部署的帖子较少,连官网也是若干年前的版本,因此,开贴记录一下Mondrian在使用上的一些坑,关心Mondrian的使用请直接移步第二章。 1.OLAP简介 1.1什么是OLAP OLAP系统,英文为OnLine Analytical Processing,中文为联机分析处理系统,它在数据分析和决策方面为用户或“知识工人”提供服务,以不同的格式组织和提供数据,满足不同用户的形形色色的需求。与之相对 阅读详情

开发环境搭建:

1个想法一通向导搞定spring boot

ps:使用IDEA构建一个SpringBoot + Hibernate + Gradle项目

这一步,算是建造了spring + hibernate,后面还有连接池,换成mybatis的问题。

idea中Alt + Enter导入包,和eclipse有点不一样。

甲骨文罐子??:ps:  gradle开发springboot项目,连接甲骨文数据库

然后狂建一堆model .....

测试运行一遍:报错:

java.lang.IllegalArgumentException: Not a managed type: class com.comm.f_olap.model.CommObject...

。实体类加上注解啥的,问题解决。

@Entity
@Table(name = "user")//数据库的表名
public class CommObject {
	@Id
	private int id;
	@Column(name = "name")//数据库的字段名,数据库 不区分大小写 这个 要注意
.....

连接池:

ps:深入理解Spring Boot数据源与连接池原理

spring boot自带了连接池?测试一把:

@SpringBootTest
class FOlapApplicationTests {
    @Autowired
    DataSource dataSource;

    @Test
    void contextLoads() {
        System.out.println(dataSource.getClass());
    }

}

结果:com.zaxxer.hikari.HikariDataSource类。

貌似HikariDataSource蛮强大,本想约会德鲁伊,有了可用的连接池,就不看其他的,否则,我可能还得做加配置文件等工作。

HikariDataSource是spring boot2才约会的。

ps:本想约会德鲁伊:

build.gradle:中加一行:

compile group: 'com.alibaba', name: 'druid', version: '1.1.10'

属性文件(application.properties)如下:

server:
    port: 8881
    max-http-header-size: 102400

spring:
    datasource:
        url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
        username: SUPERVISION
        password: 1
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: oracle.jdbc.OracleDriver
        druid:
            initial-size: 1
            min-idle: 1
            max-active: 300
            max-wait: 60000
            time-between-eviction-runs-millis: 60000
            min-evictable-idle-time-millis: 30000
            validation-query: SELECT 'x' from dual
            test-while-idle: true
            test-on-borrow: false
            test-on-return: false
            pool-prepared-statements: true
            max-pool-prepared-statement-per-connection-size: 20
            filters: stat,slf4j
            connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
            web-stat-filter.enabled: true
            web-stat-filter.principal-session-name: username
            stat-view-servlet.enabled:  true
            stat-view-servlet.url-pattern:  /druid/*
    jpa:
        show-sql: true
        database: oracle
        properties:
            hibernate:
                dialect: org.hibernate.dialect.OracleDialect
                enable_lazy_load_no_trans: true
        open-in-view: true

运行报错:应该是还要加一个配置文件,既然用HikariDataSource,这个就不进行下去了。

ps:相关参考:用到时候,参考一下,这里先记下。

  1. 深入了解Spring Boot数据源与连接池原理
  2. Spring Boot集成Druid连接池(MySQL8.0.11)
  3. springBoot + gradle + Oracle配置德鲁伊
  4. springboot多数据源(三种数据库连接池--JDBC,dbcp2,Druid)
  5. Springboot整合Druid,添加拦截器进行数据监控
  6. springboot添加德鲁伊步骤
  7. Springboot + Mybatis的+ dbcp + MySQL的简单集成
  8. springboot配置数据库连接池
  9. SpringBoot配置连接池
  10. springboot添加druid步骤(两种方案)
  11. springboot2.0整合德鲁伊,以及springboot自动装配DataSource原理

持久层考虑因素:

        1,我们要集成mondrian,mondrian好像是jdbc直连,所以测试一下mondrian集成在spring boot 2.0下的表现。

                       从2个方面测试,一个是mondrian直联jdbc,一个是和spring boot jdbc template Integrated?

        2,我们项目用hibernate还是mybatis?

                     hibernate?对我来说,类是继承的pojo,hibernate如何实现,得测试一遍。

                      mybatis?貌似蛮灵活,但可以点击,也得测试一遍。

        因此,我们要从三个方面进行测试:

  1.                       mondrian集成;
  2.                       hibrenate中,pojo是继承关系的rud测试。
  3.                       mybatis测试。    

spring boot环境下 mondrian集成:

    mondrian集成?参考我前面写的《非税olap分析平台的设计与实现(二)_测试开发配置》。

ps:Zxing的集成---- Maven对应Gradle的写法

测试不成功,可能是代理,GW惹的祸?

不管它:

直接约会lib,

gradle中,加入 dependencies{compile files('lib/mondrian-4.7.0.0-12.jar')} ok!

搭建环境中,没必要掌握所有细节,还是得以解决问题为导向。

mondrian集成过程:gradle中添加如下内容(也许有多的jar):

    dependencies{compile files('lib/mondrian-4.7.0.0-12.jar')}
    dependencies{compile files('lib/eigenbase-xom-1.3.4.jar')}
    dependencies{compile files('lib/eigenbase-resgen-1.3.1.jar')}
    compile group: 'org.olap4j', name: 'olap4j', version: '1.2.0'
    compile group: 'org.olap4j', name: 'olap4j-xmlaserver', version: '1.2.0'
    //compile group: 'eigenbase', name: 'eigenbase-xom', version: '1.3.4'
    compile group: 'net.hydromatic', name: 'eigenbase-properties', version: '1.1.5'
    //compile group: 'eigenbase', name: 'eigenbase-resgen', version: '1.3.1'
    compile group: 'commons-math', name: 'commons-math', version: '1.2'
    compile group: 'apache-log4j', name: 'log4j', version: '1.2.14'
    compile group: 'commons-vfs', name: 'commons-vfs', version: '1.0'
    compile group: 'org.apache.commons', name: 'commons-vfs2', version: '2.1'

但 测试运行报错:

org.apache.commons.vfs.FileSystemException: Could not create a file system manager of class "org.apache.commons.vfs.impl.StandardFileSystemManager".
	at org.apache.commons.vfs.VFS.createManager(VFS.java:93)
	at org.apache.commons.vfs.VFS.getManager(VFS.java:47)
	at mondrian.spi.impl.ApacheVfsVirtualFileHandler.readVirtualFile(ApacheVfsVirtualFileHandler.java:37)
	at mondrian.olap.Util.readVirtualFile(Util.java:3479)
	at 
......
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
	at java.lang.ClassLoader.defineClass1(Native Method)
	......
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 97 more

java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ReferenceMap

	......
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.map.ReferenceMap
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 78 more

提示差java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal ,百度一番,发现这个jar 报名是xml-apis

ps:java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal 的解决办法

打开原来maven引用的情况如下:

可以看到,olap4j 依赖xml_apis.jar,

我这里是complie引用该jar,因此,(gradle 没有优先读本地maven?这方式没有加载olap4j 所依赖的库?或者maven库有问题?)

另外ClassNotFoundException:org.apache.commons.collections.map.ReferenceMap,这个问题,是差commons-collections。

重新引入它,运行测试,报错:

2019-11-14 13:59:36.548  INFO 83320 --- [           main] o.a.c.vfs.impl.DefaultFileReplicator     : Using "C:\Users\tbxc\AppData\Local\Temp\vfs_cache" as temporary files store.
mondrian.olap.MondrianException: Mondrian Error:Internal error: Virtual file is not readable: FSCK_MDX.xml
	at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:989)
	at mondrian.olap.Util.newInternal(Util.java:2536)
	at mondrian.olap.Util.newError(Util.java:2551)
	at 
......

mondrian.olap.MondrianException: Mondrian Error:Connect string must contain property 'Catalog' or property 'CatalogContent'

	at mondrian.resource.MondrianResource$_Def1.ex(MondrianResource.java:1009)
	......

文件路径不对?重新copy路径如下图:

ok! 测试通过!

完整gradle如下:

plugins {
    id 'org.springframework.boot' version '2.2.1.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
}

group = 'com.Comm'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
    mavenCentral()
}

dependencies {

    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-web-services'
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1'



    implementation('org.springframework.boot:spring-boot-starter-actuator')
    implementation('org.springframework.boot:spring-boot-starter-data-jpa')
    implementation('org.springframework.boot:spring-boot-starter-jdbc')
    implementation('org.springframework.boot:spring-boot-starter-web')
    testImplementation('org.springframework.boot:spring-boot-starter-test')

    dependencies{compile files('lib/ojdbc6.jar')}

    dependencies{compile files('lib/mondrian-4.7.0.0-12.jar')}
    dependencies{compile files('lib/eigenbase-xom-1.3.4.jar')}
    dependencies{compile files('lib/eigenbase-resgen-1.3.1.jar')}
    dependencies{compile files('lib/xml-apis-1.4.01.jar')}
    compile group: 'org.olap4j', name: 'olap4j', version: '1.2.0'
    compile group: 'org.olap4j', name: 'olap4j-xmlaserver', version: '1.2.0'

    compile group: 'net.hydromatic', name: 'eigenbase-properties', version: '1.1.5'

    compile group: 'commons-math', name: 'commons-math', version: '1.2'
    compile group: 'apache-log4j', name: 'log4j', version: '1.2.14'
    compile group: 'commons-vfs', name: 'commons-vfs', version: '1.0'
    compile group: 'org.apache.commons', name: 'commons-vfs2', version: '2.1'
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2.2'

}

test {
    useJUnitPlatform()
}

hibernate5:

继承关系的测试:

//父类
@Entity
@Table(name = "COMMOBJECT")//数据库的表名
@Inheritance(strategy = InheritanceType.JOINED)
public class CommObject {
	@Id
	private int id;
	@Column(name = "name")//数据库的字段名,数据库 不区分大小写 这个 要注意
	private String name;
....

//子类

@Entity
@Table
@PrimaryKeyJoinColumn(name = "id")
public class FormFolder extends CommObject {
....

以前我都是写配置文件,这次换注解,测试通过。

参考文档:

spring-data-jpa实现继承实体类详解

Hibernate继承注解

SpringBoot 与JPA结合中 JpaRepository 里自定义查询

ibats?算了,用hibernate就够了!

原型需要的数据:

开发先做关键原型,接下来准备各种原型需要的数据。

先准备维度数据:年度、期间、版本、币别、场景、项目、组织

                                                                             (维度的管理类) 

一个具体维度,数据库上有三张表反映:

                                                                             (维度及mondrian相关表) 

维度相关的表:

  1. commObject,所有原始的祖先表;
  2. 前缀为 “c_” 的表,用于管理各类维度。
  3. 前缀为““c_dim_”的表,是mondrain引擎用到维度表。

配置mondrian的schemal相关的维度表用"c_dim_"前缀开头。

维度数据准备,以后应该用kettle抽取?

由于我先搞了一个项目维度表,感觉内容多了,相关数据重新迁移到commobject表。

  select p.projectkey + 500000,
         p.projectname,
         1,
         -100,    --上级id 下面再处理
         case   --代数
           when p.projectcode = p.level1projectcode then
            1
           when p.projectcode = p.level2projectcode then
            2
           when p.projectcode = p.level3projectcode then
            3
           when p.projectcode = p.level4projectcode then
            4
           when p.projectcode = p.level5projectcode then
            5
           when p.projectcode = p.level6projectcode then
            6
           when p.projectcode = p.level7projectcode then
            7
           when p.projectcode = p.level8projectcode then
            8
         end,
         
         case p.isleaf   --是否有子节点
           when '0' then
            1
           when '1' then
            0
         end,
         rank,
         0,
         to_timestamp(to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),     --时间戳
                      'yyyy-mm-dd hh24:mi:ss')
    from dim_chargeproject p,
         
         (select p.projectkey projectkey,
                 p.projectcode,
                 p.projectname
                 
                ,
                 rank() over(order by p.projectcode) rank   --排序号 可能有问题
            from dim_chargeproject p) pr
   where pr.projectkey = p.projectkey

ps:timestamp 是oracle对date的扩展,其度量精度比date类型更高。

case when 在这条语句中有2个形态,注意语法上些许差别。

上面没有更新commobject表中parent,后面用一条语句更新一下,即根据一张表的数据更新另外一张表相关字段。

--temp22 是一张临时表 
update commobject t

   set t.parent = (select s.pk2 from temp22 s where s.pk0 = t.id)

 where t.id in (select s.pk0 from temp22 s)

mondrian用到的维度表是偏平化结构,所以要去掉非末级节点:


delete   from c1_dim_account  c1 where c1.id in (

select p.projectkey+500000 pk0 from dim_chargeproject p where p.isleaf=0);

 到此,模拟维度数据准备完毕。

其他开发配置:

我们项目何vue前端,采取json交换,因此,引入了json相关jar,json消息,我们需要进行格式化封装,沿用我们原有项目格式,又是一番copy,解决问题。

测试vue 前端和后端服务连接,上一段测试代码,ok! 测试代码如下:

<template>
  <div id="vue_olap_showData">
    <div>
      <el-button type="primary" @click="get_olap_showData">读取后台数据</el-button>
    </div>
    <div class="olapResult" v-html="olapData"></div>
  </div>
</template>

<script  type="text/javascript">
import olapShowData from "@/api/olap/olap_showData.js";
export default {
  data() {
    return {
      olapData: ""
    };
  },
  methods: {
    get_olap_showData() {
      olapShowData.olapShowData().then(res => {
        this.olapData = res.data;
      });
    }
  }
};
</script>

<style lang='scss'>
.olapResult {

  td {
    font-size: 12px;
    border-left: solid 1px silver;
    border-right: none;
    border-top: none;
    border-bottom: solid 1px silver;
    text-align: right;
    width: 105px;
    height: 25px;
  }
}
//flex 高度控制的问题,还有点模糊,先放着
.vue_olap_showData {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}


</style>

效果如下图:

开源OLAP引擎:Mondrian OLAP Created 星期四 20 十月 2016为了满足业务管理和决策的报表系统(包括传统报表、数据仓库、OLAP等)也被创建出来,企业主管通过报表了解企业的总体运行状态。但是,随着企业间竞争的加剧和市场节奏的进一步加快,企业的日常管理需要对关键业务指标的更加实时的监控和反馈。比如:制造业需要更及时的仓库调度、金融业需要更实时的风险防范、电信业需要更及时的服务指标监控。于是,越来越多的企业 阅读详情

相关推荐

九、OLAP之多维分析

实际上,Mondrian并不会一开始就将的所有的数据从数据库Load到内存中,而是随着不断的钻取而执行不同的查询,它的执行速度等同于我们sql的执行速度,其展现的数据与我们的业务设计相关,除非我们要一次性从数据库中查询出几十万甚至上百万条数据,否则,效率问题是可以不考虑的。prefix为前缀,suffix为后缀,再结合传入的query,整合起来就是 /WEB-INF/queries/AccessInfo.jsp,接着打开该文件,即通过mdx实现。用户可以执行典型的OLAP导航,如下钻、切片。

526

Mondrian开源OLAP引擎详解

Mondrian是一个基于Java语言的开源OLAP引擎,它通过MDX语句执行查询,从关系型数据库RDBMS中读取数据,然后经过Java API以多维度的形式展示查询结果。Mondrian是一个OpenSource的基于关系数据库的分析服务器,遵循MDX、XML/A和JOLAP标准。Mondrian的架构Mondrian从架构上可以分为四个层次:表现层、计算层、聚合层、存储层。表现层:指最终呈现在...

赵英超的博客 7499

克里金插值(Kriging)在MATLAB中的实现(克里金工具箱)

一,直接献上克里金插值MATLAB工具箱 链接:https://pan.baidu.com/s/1p0lt2G8KQ-els7Dyw5jPFg 提取码:wcss 下载后将该程序添加到MATLAB安装文件夹中的/toolbox下,然后在设置路径中添加该程序文件为默认路径即可调用程序。 资源中内附程序使用说明PDF。 二、本人实际操作代码如下所示,标注如下 load data1 %载入数据 %模型参...

qq_40937675的博客 6万+

【亲测免费】 Mondrian OLAP: 提供高性能的数据分析解决方案

Mondrian OLAP: 提供高性能的数据分析解决方案 Mondrian OLAP 是一个开源的在线分析处理 (OLAP) 引擎,可帮助您快速分析大量数据。它是一个用于构建多维数据库并提供灵活、高效查询功能的工具。借助 Mondrian OLAP,您可以创建复杂的多维数据集,并为您的业务用户提供交互式数据分析体验。 项目介绍 Mondrian OLAP 的主要目标是提供一种易于使用的接口,以便...

gitblog_00074的博客 511

基于Unidbg的小红书加密协议动态分析与算法还原实战

在移动应用安全领域,加密协议与签名机制是保障数据传输安全、实现客户端身份验证的核心技术。其原理通常涉及哈希算法、对称/非对称加密以及自定义的混淆逻辑,旨在防止请求被篡改或重放。理解这些协议对于安全研究、风控策略制定及合规的数据交互分析具有重要价值。在实际的工程实践中,面对高度混淆和加固的Native代码(SO库),传统的静态分析往往难以深入。此时,沙盒模拟执行技术提供了一种动态、可控的分析方案。通过搭建一个虚拟的移动应用运行环境,研究人员可以在无需真机、规避反调试机制的情况下,完整地追踪和观察加密算法的执行

weixin_29315091的博客 323

Lammps纳米压痕接触面积—Matlab接触面积计算(两种方法)

Lammps纳米压痕接触面积计算

Rockyoung 5446

Mondrian简介

出自:https://www.cnblogs.com/lk-fxtx/p/7067720.html 一、 Mondrian简介 Mondrian是一个开源项目。一个用Java写成的OLAP引擎。它用MDX语言实现查询,从关系数据库(RDBMS)中读取数据。然后经过javaAPI以多维的方式对结果进行展示。 Mondrian的使用方式同JDBC驱动类似。可以非常方便的与现有的Web项目集成...

HouYing 9878

lammps案例:Cu三点弯曲模拟

大家好,我是小马老师。 本文分享一个Cu弯曲的案例。 本案例参考三点弯曲实验,三点弯曲试验是将试样放在弯曲装置上,在试样上加载进行弯曲试验,直到达到规定的弯曲程度或发生断裂。 模拟原理是在z方向固定两侧端点,在x和y方向不固定,模拟左右两个支撑点,中间压块向下运动实现弯曲。 初始结构: 运行结果为: 模拟的重点是使用fix setforce命令压住左右两端,使其不能沿z轴上下移动,但是又不能在xy方向限制其移动。 压块的运动方式比较简单,给其一个下压的速度即可。 为防止压块变形,使用setforce命

lammps_jiayou的博客 2276

mondrian olap 示例_Mondrian入门系列(七)OLAP基本操作

本章是系列(四)中组装MDX的扩展。切片、切块可以通过MDX实现,一般添加在filter轴。例如添加Time.1997,Store.Store City钻取钻取即是把Level替换为member,如TIme.Year –>Time.1997旋转加上query.swapAxes()即可就是交换行列。过滤如选取Unit Sales>1000的,QueryAxis qa.filter(“[M...

weixin_36413157的博客 690

FAST-LIO论文公式解析

FAST-LIO论文公式解析

努力努力努力 668

图解联合概率密度、边缘概率密度、条件概率密度之间的关系

简要图解联合概率密度、边缘概率密度、条件概率密度之间的关系

一个搬运知识的笨小孩 2万+

olap分析平台的设计与实现(四)--mondrian schemal

本文重点总结mondrian4 schemal的写法及其趟过的各种坑,我的mondrian版本是4.7.0.0-12 不涉及雪花模型、共享维、Virtual cubes,attribute的property、Closure tables、聚合、调优等,总结最基础的schemal,毕竟财政业务相对是比较简单的。 olap发展一直不太好,我觉得很重要的原因就是schemal等的原因,再加上展示麻...

wh_xia_jun的专栏 1735

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

多维数据模型总结和归纳

开源OLAP引擎:Mondrian 在Mondrian里面的cube是以XML的形式定义的。(MDX) Mondrian本身是不存储数据的,通过MDX语句(一个类似于SQL的查询语言)来获取数据,Mondrian 运行的时候要连数据库,并且还要有一个数据模型配置文件(Mondrian叫schema),其实就是一个取数据的规则;由此可知Mondrian只不过是把MDX 翻译成了SQL然后从数据库中...

Joe192的博客 6176

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

探索数据深渊:mondrian-olap 开源项目全面解析

探索数据深渊:mondrian-olap 开源项目全面解析 在数据分析的海洋中,如何高效地提取和分析复杂的多维数据一直是技术挑战。今天,我们将深入探讨一个强大的开源工具——mondrian-olap,它以其独特的技术架构和广泛的应用场景,为数据分析师和开发者提供了一个强大的多维数据查询解决方案。 项目介绍 mondrian-olap 是一个基于 JRuby 的 gem,它集成了 Mondrian ...

gitblog_00357的博客 949

SpringBoot整合Web开发

目录 一.SpringBoot整合Servlet 1.1通过注解扫描完成 Servlet 组件的注册 1.2通过方法完成 Servlet 组件的注册 二.SpringBoot整合Filter 2.1通过注解扫描完成 Filter 组件的注册 2.2通过方法完成 Filter 组件的注册 三.SpringBoot整合Listener 3.1通过注解扫描完成 Listen...

老隋的播客 473

Mondrian-OLAP: 探索数据的多维度分析利器

Mondrian-OLAP: 探索数据的多维度分析利器 项目基础介绍及编程语言 Mondrian-OLAP 是一个基于 JRuby 的开源项目,它整合了强大的 Mondrian OLAP 引擎,允许开发者使用 Ruby 语言来执行对关系型数据库数据的复杂多维查询。此项目特别适用于那些希望以更直观的方式分析大量数据集的用户和开发者。项目源码托管在 GitHub,并采用 MIT 和 EPL-1.0 许...

gitblog_00408的博客 812

Mondrian 3.0.4 学习总结

Mondrian 是一个用 Java 写成的 OLAP 引擎,是开源项目 Pentaho 的一部分。它实现了 MDX 语言、XML 解析、JOLAP 规范。它从 SQL 和其它数据源读取数据并把数据聚集在内存缓存中,然后经过 Java API用多维的方式对结果进行展示,同时可以不写 SQL就能分析存储于 SQL 数据库的庞大数据集,可以封装 JDBC数据源并把数据以多维的方式展现出来。

zhangzhongzhong的博客 7421

SpringBoot+ClickHouse+Vue+Druid整合实战

【介绍】ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。场景的关键特征 绝大多数是读请求数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。已添加到数据库的数据不能修改。对于读取,从数据库中提取相当多的行,但只提取列的一小部分。宽表,即每个表包含着大量的列查询相对较少(通常每台服务器每秒查询数百次或更少)对于简单查询,允许延迟大约50毫秒列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)事务不是必须的对数据一致性要求低每个查询有一个大表。除了他以外,其他的都很小。查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中【本课重点】技术栈:SpringBoot2 MybatisPlusDruidJava 8VueElement-UID2-Crud-Plus 开发思路:前后端分离 项目重点:ClickHouse的Api使用 

mondrian olap 示例_Mondrian数据库olap应用文档

Mondrian数据库olap应用文档一 创建数据仓库1)DW名称主要是在相应数据库中建立相应的数据仓库,事实表,维表结构2)选择数据源主要是应用weblogic 控制台,建立数据库连接池、数据源并进行数据源的选择例如:建立数据源jdbc/LnSw在weblogic控制台中配置数据库连接池和数据源,其中数据源的格式如jdbc/xxxx表示;如:在纳税评估系统中数据源格式为jdbc/Lnsw3) 设...

weixin_30280259的博客 270

Mondrian OLAP前端

OLAP前端 Created 星期一 24 十月 2016 Mondrian 本身基本只是一个OLAP 引擎,它也包含Jsp 标签库、MdxQueryServlet可以生成静态的HTML 表格,但比较简单,而且需要提供MDX 语句。如果需要丰富的展示效果以及用户交互能力,可以选用一个前端工具。 JPIVOT jPivot 是一个老牌的前端展示工具。可以参考,但界面太丑。 saiku

小小懒羊羊 1754

数据仓库---JPivot连接MySQL VS PostgreSQL

JPivot是一个基于mondrian(OLAP分析服务)的可钻取web报表展示标签,形成了整套的较方便的数据仓库主题web展现工具。话说JPivot已经很久没有更新了,作为小规模的应用,试试可以,但是要做为产品,貌似还差太多。下面以JPivot连接Mysql VS PostgreSQL做个简单的例子,以比较两个数据库有什么差别,作为分析比较之用。 数据准备 1. 建立数据库和表 CREAT

数据时代--收集,存储,处理,分析,挖掘,检索,展现 2247

Mondrian OLAP 项目教程

Mondrian OLAP 项目教程 项目介绍 Mondrian 是一个开源的在线分析处理(OLAP)服务器,使用 Java 编写。它支持多维表达式(MDX)查询语言,并能够从关系数据库(RDBMS)中读取数据,以多维格式呈现结果。Mondrian 主要用于商业智能(BI)领域,帮助用户实时分析大量数据。 项目快速启动 环境准备 Java 开发环境 关系数据库(如 MySQL, PostgreS...

gitblog_00699的博客 504

Mondrian 架构

Mondrian架构的官网翻译。其中省略了MDX介绍和MOLAP,ROLAP介绍。Mondrian的OLAP系统由4层组成,参见下图。从终端用户到数据中心内核,四层架构分别是:展现层(presentation layer)、维度层(dimensional layer)、星层(star layer)和存储层。

Bluebelfast的专栏 2186

从零开始构建终极跨平台curl:你的网络工具箱革命

你是否曾经因为Windows上curl版本过时而烦恼?或者因为系统依赖问题导致curl命令在不同机器上表现不一?今天,我要向你介绍curl-for-win项目——这不仅仅是一个简单的curl二进制包,而是一个完整的、可重现的构建生态系统,让你的网络操作从此告别兼容性烦恼。 想象一下:你开发了一个脚本,在本地运行完美,但部署到服务器上却因为curl版本差异而崩溃。这种经历相信很多开发者都遇到过。c

gitblog_01025的博客 777
上一篇: olap分析平台的设计与实现(十六)- 上卷、下钻的实现思路
下一篇: olap分析平台的设计与实现(十八)- 表单布局的概念
wh_xia_jun
博客等级 码龄16年 1335粉丝 405原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值