标签: mondrian

要在Java应用程序中包含哪个pentaho mondrian库以将MDX映射到SQL

我想实现一个为MDX查询提供支持的应用程序.为此,我想使用pentaho mondrian(一个带有MDX接口的开源OLTP服务器)中的一个库,它将MDX查询转换为下划线数据库的SQL(基于xml描述),遗憾的是我无法找到任何信息.库我需要包含 - 以及如何使用它们 - 在我的项目中使MDX到SQL映射工作.

有没有人在她/他的应用程序中重复使用mondrian组件的经验?

java integration mdx mondrian

6
推荐指数
1
解决办法
1471
查看次数

Microsoft Excel 可以浏览蒙德里安立方体吗​​?

是否可以通过 Microsoft Excel 浏览蒙德里安立方体?像 Microsoft SSAS 一样吗?如果没有,是否有可能使用 Sharepoint 作为前端来浏览蒙德里安立方体?

excel olap ssas data-warehouse mondrian

5
推荐指数
2
解决办法
4947
查看次数

调试BI堆栈:MySQL + Mondrian + Saiku服务器

我正在尝试学习如何构建BI堆栈,但我一直在理解该流程的哪个部分失败:

  1. 设计星型模式:完成
  2. 将数据从我的OLTP数据库(MySQL)加载到我的星际数据库(MySQL也是如此):使用Pentaho Data Integration完成
  3. 将Mondrian XML描述为多维数据集:使用Mondrian Schema Workbench完成
  4. 使用Mondrian XML描述和MySQL星型数据库设置具有正确配置的Saiku服务器:完成

结果:Saiku中没有立方体.我不知道这可能来自哪个元素.第2步是正确的,因为我可以运行这部分.

这是我的星型模式:

CREATE TABLE IF NOT EXISTS `dim_date` (
  `date_id` int(11) NOT NULL AUTO_INCREMENT,
  `date` datetime DEFAULT NULL,
  `month` varchar(3) DEFAULT NULL,
  `year` varchar(4) DEFAULT NULL,
  PRIMARY KEY (`date_id`),
  KEY `idx_dim_date_lookup` (`date`,`month`,`year`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `dim_sector` (
  `sector_id` int(11) NOT NULL AUTO_INCREMENT,
  `sector` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`sector_id`),
  KEY `idx_dim_sector_lookup` (`sector`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `dim_size` ( …
Run Code Online (Sandbox Code Playgroud)

pentaho mondrian business-intelligence saiku

5
推荐指数
1
解决办法
2776
查看次数

蒙德里安:计算过滤器总数

我有这个MDX查询:

    with member [Measures].[count] as '[Measures].[NUMBER]'
         ** member [Measures].[total] as 'sum({[RECORD_TYPE.VALUES].[All VALUEs].children})' **
         member [Measures].[% records] as '([Measures].[count] / [Measures].[total])', format_string = "0.0%"
   select {[Measures].[count], [Measures].[% records], [Measures].[total]} ON COLUMNS,
  [RECORD_TYPE.VALUE].[1] ON ROWS
    from [RECORDS]
   where Crossjoin({[CITY].[LONDON]}, {([DATE.DATE].[20171101] : [DATE.DATE].[20171130])})
Run Code Online (Sandbox Code Playgroud)

我发现这个[总]会员只按日期计算过滤记录(记录20171101和20171130之间的数据).如果我将此总数切换为:

member [Measures].[total] as 'sum({[DATE.DATE].[All DATEs].children})'
Run Code Online (Sandbox Code Playgroud)

无论城市如何,我都会在立方体中获得所有记录.

我希望这个总数是[CITY].[LONDON]在立方体中的记录总数,无论记录类型如何.你能告诉我我该怎么办?

mdx mondrian

5
推荐指数
1
解决办法
83
查看次数

从Mondrian OLAP引擎+ Olap4j中呈现数据

我正在计划一个使用Mondrian OLAP引擎和Olap4j的应用程序,并应向用户显示/显示数据.我理解所有的后端内容,但我不确定如何在视图层中显示数据.

例如,olap4j有一个格式化程序,可以很好地将SELECT打印到控制台中.

我从olap4j获得的数据如何显示在视图层中?我刚刚浏览了olap4j API,并且似乎没有任何东西可以以某种方式获得结果,可以以某种方式进一步处理和显示.这个过程是Pentaho解决方案的一部分吗?那么否则仅仅从Mondrian OLAP引擎和olap4j呈现数据真的不容易?

编辑:我习惯于传统上从数据库中获取一些数据到我的DTO中并在视图层中显示它.但是如何为这样复杂的结果集创建DTO呢?

olap pentaho mondrian olap4j data-presentation

4
推荐指数
1
解决办法
4344
查看次数

mondrian.xml模式文件pentaho位置

我正在通过schema-workbench或ivy schema editor创建多维数据集(xml架构).当我发布它时,我想知道模式(mondrian.xml文件)实际保存在哪里,这些文件的位置是什么?

谢谢,

pentaho mondrian olap-cube

4
推荐指数
1
解决办法
2643
查看次数

MDX 查询以获取日期大于的所有日期

例如,我需要获取年份大于 2013 年的所有日期。此代码返回所有日期。

SELECT 
  {[Measures].[In]} ON COLUMNS
 ,Filter
  (
    [Date].MEMBERS
   ,
    [Date].[Year].CurrentMember > [Date].[2013]
  ) ON ROWS
FROM [Shop];
Run Code Online (Sandbox Code Playgroud)

我需要获取所有日期大于 2013.05.20 的日期

mdx mondrian

4
推荐指数
1
解决办法
7583
查看次数

蒙德里安奥拉普钻取算法

我没有找到但可能有人可以解释 - OLAP多维数据集是所有可能聚合的组合,因此与Mondrian相关 - 叶级别是事实表中的数据还是最小聚合(单元格)?谢谢.

java olap mondrian drilldown

3
推荐指数
1
解决办法
1325
查看次数

层次结构和级别之间的差异

我刚刚开始研究蒙德里安.我很难理解层次结构和层次.多维数据集中维度的级别和层次结构之间的区别是什么?为什么在构建Mondrian模式时我们需要在层次结构中包含级别?

谢谢阅读

mondrian olap-cube business-intelligence

3
推荐指数
1
解决办法
1万
查看次数

在MDX查询中使用NOT IN

我正在尝试从MDX选择查询中的维度中过滤掉一些点。我已经使用了http://mondrian.pentaho.com/documentation/mdx.php中记录的Filter(,)函数。正在运行的MDX如下

  SELECT {[Measures].[AMOUNT]} on 0,  
         {Filter ([DIM1].MEMBERS, [DIM1].CurrentMember NOT IN {[DIM1].[A], [DIM1].[B], [DIM1].[C]})} on 1,
         {[DIM2].[S]} on 2, 
         {[DIM3].[EFO]} on 3, 
         {[CURRENCY].[EUR]} on 4
  from [CUBE]
Run Code Online (Sandbox Code Playgroud)

但是Measures.AMOUNT仍在考虑Dim1.A,Dim1.B和Dim1.C。能否请您指出我的语法有什么问题?我也尝试了Except(,)。

最好,罗汉

更新:

感谢Marc,为我指出了正确的方向。我进行了更多测试,发现Member函数还返回一个点“ All”,其中包括我维度上的所有点。因此,即使Filter()或Except()函数正确地过滤了点,“全部”点仍包含所有点的值,因此将它们包括在Measure.AMOUNT计算中。相反,我使用了Children函数,该函数未返回“ All”点,因此我看到了所需的结果。更新了下面的MDX

使用Filter和NOT IN来工作MDX(警告:NOT IN是Mondrian特定的操作)

 SELECT {[Measures].[AMOUNT]} on 0,  
         {Filter ([DIM1].Children, [DIM1].CurrentMember NOT IN {[DIM1].[A], [DIM1].[B], [DIM1].[C]})} on 1,
         {[DIM2].[S]} on 2, 
         {[DIM3].[EFO]} on 3, 
         {[CURRENCY].[EUR]} on 4
  from [CUBE]
Run Code Online (Sandbox Code Playgroud)

使用MDX除外

 SELECT {[Measures].[AMOUNT]} on 0,  
         {except ( {[DIM1].Children}, {[DIM1].[A], [DIM1].[B], [DIM1].[C]} )} on 1,
         {[DIM2].[S]} on 2, 
         {[DIM3].[EFO]} …
Run Code Online (Sandbox Code Playgroud)

mdx mondrian

3
推荐指数
1
解决办法
7923
查看次数